From 394f0deb1b1275cc289b349b6108f4a45593b14f Mon Sep 17 00:00:00 2001 From: Sy Date: Fri, 19 Jun 2020 23:38:37 +0200 Subject: [PATCH] bnProcPc and bnProc unrolled | BN treatment, small improvement in times at the expense of degraded performance in BLER , reordering of generated files --- cmake_targets/CMakeLists.txt | 2 +- ...176_rate_1-3_block_length_3848_maxit_5.txt | 0 ...320_rate_1-3_block_length_7000_maxit_5.txt | 0 ...384_rate_1-3_block_length_8000_maxit_5.txt | 0 ...384_rate_1-3_block_length_8400_maxit_5.txt | 0 ...84_rate_1-3_block_length_8448_maxit_10.txt | 0 ...384_rate_1-3_block_length_8448_maxit_5.txt | 121 +- ...384_rate_2-3_block_length_8448_maxit_5.txt | 72 - ...2_rate_1-3_block_length_-27056_maxit_5.txt | 0 ...320_rate_1-3_block_length_3200_maxit_5.txt | 0 ...384_rate_1-3_block_length_3840_maxit_5.txt | 0 ..._Zc_3_rate_1-3_block_length_16_maxit_5.txt | 152 -- .../PHY/CODING/nrLDPC_decoder/nrLDPC_cnProc.h | 872 ++++++- .../CODING/nrLDPC_decoder/nrLDPC_decoder.c | 2024 ++++++++++------- .../nrLDPC_decoder/nrLDPC_decoder.c.full | 534 +++++ .../PHY/CODING/nrLDPC_decoder/nrLDPC_mPass.h | 29 +- .../generator_avx2/cnProc_gen_avx2 | Bin 201040 -> 0 bytes .../nrLDPC_tools/generator_bnProc/Makefile | 27 + .../generator_bnProc/bnProcPc_gen_BG1_avx2.c | 1777 +++++++++++++++ .../generator_bnProc/bnProcPc_gen_BG2_avx2.c | 1773 +++++++++++++++ .../generator_bnProc/bnProc_gen_BG1_avx2.c | 1235 ++++++++++ .../generator_bnProc/bnProc_gen_BG1_avx2.c.1 | 1235 ++++++++++ .../generator_bnProc/bnProc_gen_BG2_avx2.c | 1232 ++++++++++ .../generator_bnProc/bnProc_gen_avx2 | Bin 0 -> 617896 bytes .../nrLDPC_tools/generator_bnProc/main.c | 28 + .../generator_bnProc/sauvegarde.tar.gz | Bin 0 -> 9050 bytes .../Makefile | 0 .../cnProc_gen_BG1_avx2.c | 6 +- .../cnProc_gen_BG2_avx2.c | 4 +- .../generator_cnProc/cnProc_gen_avx2 | Bin 0 -> 43488 bytes .../main.c | 8 +- .../Makefile | 0 .../cnProc_gen_BG1_avx512.2 | 583 +++++ .../cnProc_gen_BG1_avx512.c | 5 +- .../cnProc_gen_BG2_avx512.c | 4 +- .../cnProc_gen_avx512 | Bin 43360 -> 43368 bytes .../main.c | 0 .../generator_cnProc_avx512/sauvegarde.tar.gz | Bin 0 -> 3870 bytes .../bnProc/nrLDPC_bnProc_BG1_Z104_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z10_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z112_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z11_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z120_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z128_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z12_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z13_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z144_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z14_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z15_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z160_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z16_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z176_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z18_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z192_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z208_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z20_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z224_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z22_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z240_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z24_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z256_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z26_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z288_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z28_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z2_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z30_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z320_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z32_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z352_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z36_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z384_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z3_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z40_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z44_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z48_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z4_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z52_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z56_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z5_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z60_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z64_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z6_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z72_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z7_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z80_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z88_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z8_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z96_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG1_Z9_R13_AVX2.c | 978 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z104_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z10_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z112_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z11_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z120_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z128_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z12_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z13_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z144_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z14_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z15_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z160_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z16_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z176_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z18_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z192_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z208_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z20_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z224_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z22_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z240_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z24_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z256_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z26_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z288_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z28_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z2_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z30_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z320_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z32_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z352_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z36_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z384_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z3_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z40_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z44_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z48_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z4_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z52_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z56_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z5_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z60_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z64_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z6_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z72_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z7_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z80_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z88_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z8_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z96_R15_AVX2.c | 992 ++++++++ .../bnProc/nrLDPC_bnProc_BG2_Z9_R15_AVX2.c | 992 ++++++++ .../nrLDPC_bnProcPc_BG1_Z104_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z10_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z112_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z11_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z120_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z128_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z12_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z13_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z144_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z14_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z15_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z160_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z16_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z176_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z18_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z192_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z208_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z20_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z224_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z22_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z240_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z24_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z256_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z26_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z288_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z28_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z2_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z30_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z320_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z32_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z352_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z36_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z384_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z3_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z40_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z44_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z48_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z4_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z52_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z56_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z5_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z60_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z64_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z6_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z72_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z7_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z80_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z88_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z8_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z96_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG1_Z9_R13_AVX2.c | 749 ++++++ .../nrLDPC_bnProcPc_BG2_Z104_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z10_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z112_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z11_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z120_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z128_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z12_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z13_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z144_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z14_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z15_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z160_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z16_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z176_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z18_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z192_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z208_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z20_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z224_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z22_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z240_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z24_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z256_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z26_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z288_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z28_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z2_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z30_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z320_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z32_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z352_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z36_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z384_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z3_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z40_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z44_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z48_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z4_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z52_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z56_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z5_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z60_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z64_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z6_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z72_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z7_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z80_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z88_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z8_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z96_R15_AVX2.c | 757 ++++++ .../nrLDPC_bnProcPc_BG2_Z9_R15_AVX2.c | 757 ++++++ .../nrLDPC_cnProc_BG1_Z104_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z10_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z112_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z11_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z120_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z128_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z12_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z13_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z144_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z14_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z15_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z160_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z16_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z176_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z18_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z192_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z208_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z20_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z224_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z22_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z240_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z24_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z256_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z26_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z288_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z28_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z2_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z30_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z320_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z32_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z352_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z36_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z384_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z3_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z40_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z44_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z48_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z4_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z52_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z56_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z5_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z60_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z64_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z6_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z72_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z7_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z80_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z88_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z8_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z96_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG1_Z9_R13_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z104_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z10_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z112_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z11_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z120_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z128_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z12_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z13_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z144_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z14_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z15_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z160_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z16_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z176_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z18_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z192_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z208_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z20_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z224_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z22_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z240_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z24_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z256_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z26_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z288_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z28_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z2_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z30_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z320_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z32_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z352_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z36_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z384_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z3_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z40_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z44_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z48_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z4_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z52_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z56_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z5_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z60_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z64_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z6_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z72_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z7_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z80_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z88_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z8_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z96_R15_AVX2.c} | 2 +- .../nrLDPC_cnProc_BG2_Z9_R15_AVX2.c} | 2 +- ....c => nrLDPC_cnProc_BG1_Z104_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z10_R13_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG1_Z112_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z11_R13_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG1_Z120_R13_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG1_Z128_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z12_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z13_R13_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG1_Z144_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z14_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z15_R13_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG1_Z160_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z16_R13_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG1_Z176_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z18_R13_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG1_Z192_R13_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG1_Z208_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z20_R13_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG1_Z224_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z22_R13_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG1_Z240_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z24_R13_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG1_Z256_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z26_R13_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG1_Z288_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z28_R13_AVX512.c} | 2 +- ...12.c => nrLDPC_cnProc_BG1_Z2_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z30_R13_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG1_Z320_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z32_R13_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG1_Z352_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z36_R13_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG1_Z384_R13_AVX512.c} | 2 +- ...12.c => nrLDPC_cnProc_BG1_Z3_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z40_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z44_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z48_R13_AVX512.c} | 2 +- ...12.c => nrLDPC_cnProc_BG1_Z4_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z52_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z56_R13_AVX512.c} | 2 +- ...12.c => nrLDPC_cnProc_BG1_Z5_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z60_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z64_R13_AVX512.c} | 2 +- ...12.c => nrLDPC_cnProc_BG1_Z6_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z72_R13_AVX512.c} | 2 +- ...12.c => nrLDPC_cnProc_BG1_Z7_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z80_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z88_R13_AVX512.c} | 2 +- ...12.c => nrLDPC_cnProc_BG1_Z8_R13_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG1_Z96_R13_AVX512.c} | 2 +- ...12.c => nrLDPC_cnProc_BG1_Z9_R13_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG2_Z104_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z10_R15_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG2_Z112_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z11_R15_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG2_Z120_R15_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG2_Z128_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z12_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z13_R15_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG2_Z144_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z14_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z15_R15_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG2_Z160_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z16_R15_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG2_Z176_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z18_R15_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG2_Z192_R15_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG2_Z208_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z20_R15_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG2_Z224_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z22_R15_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG2_Z240_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z24_R15_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG2_Z256_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z26_R15_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG2_Z288_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z28_R15_AVX512.c} | 2 +- ...12.c => nrLDPC_cnProc_BG2_Z2_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z30_R15_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG2_Z320_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z32_R15_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG2_Z352_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z36_R15_AVX512.c} | 2 +- ....c => nrLDPC_cnProc_BG2_Z384_R15_AVX512.c} | 2 +- ...12.c => nrLDPC_cnProc_BG2_Z3_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z40_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z44_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z48_R15_AVX512.c} | 2 +- ...12.c => nrLDPC_cnProc_BG2_Z4_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z52_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z56_R15_AVX512.c} | 2 +- ...12.c => nrLDPC_cnProc_BG2_Z5_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z60_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z64_R15_AVX512.c} | 2 +- ...12.c => nrLDPC_cnProc_BG2_Z6_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z72_R15_AVX512.c} | 2 +- ...12.c => nrLDPC_cnProc_BG2_Z7_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z80_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z88_R15_AVX512.c} | 2 +- ...12.c => nrLDPC_cnProc_BG2_Z8_R15_AVX512.c} | 2 +- ...2.c => nrLDPC_cnProc_BG2_Z96_R15_AVX512.c} | 2 +- ...12.c => nrLDPC_cnProc_BG2_Z9_R15_AVX512.c} | 2 +- 446 files changed, 188064 insertions(+), 1343 deletions(-) delete mode 100644 cmake_targets/ldpctest_BG_1_Zc_176_rate_1-3_block_length_3848_maxit_5.txt delete mode 100644 cmake_targets/ldpctest_BG_1_Zc_320_rate_1-3_block_length_7000_maxit_5.txt delete mode 100644 cmake_targets/ldpctest_BG_1_Zc_384_rate_1-3_block_length_8000_maxit_5.txt delete mode 100644 cmake_targets/ldpctest_BG_1_Zc_384_rate_1-3_block_length_8400_maxit_5.txt delete mode 100644 cmake_targets/ldpctest_BG_1_Zc_384_rate_1-3_block_length_8448_maxit_10.txt delete mode 100644 cmake_targets/ldpctest_BG_1_Zc_384_rate_2-3_block_length_8448_maxit_5.txt delete mode 100644 cmake_targets/ldpctest_BG_2_Zc_2_rate_1-3_block_length_-27056_maxit_5.txt delete mode 100644 cmake_targets/ldpctest_BG_2_Zc_320_rate_1-3_block_length_3200_maxit_5.txt delete mode 100644 cmake_targets/ldpctest_BG_2_Zc_384_rate_1-3_block_length_3840_maxit_5.txt delete mode 100644 cmake_targets/ldpctest_BG_2_Zc_3_rate_1-3_block_length_16_maxit_5.txt create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c.full delete mode 100755 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx2/cnProc_gen_avx2 create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/Makefile create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProcPc_gen_BG1_avx2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProcPc_gen_BG2_avx2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_BG1_avx2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_BG1_avx2.c.1 create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_BG2_avx2.c create mode 100755 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_avx2 create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/main.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/sauvegarde.tar.gz rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/{generator_avx2 => generator_cnProc}/Makefile (100%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/{generator_avx2 => generator_cnProc}/cnProc_gen_BG1_avx2.c (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/{generator_avx2 => generator_cnProc}/cnProc_gen_BG2_avx2.c (98%) create mode 100755 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc/cnProc_gen_avx2 rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/{generator_avx2 => generator_cnProc}/main.c (79%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/{generator_avx512 => generator_cnProc_avx512}/Makefile (100%) create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc_avx512/cnProc_gen_BG1_avx512.2 rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/{generator_avx512 => generator_cnProc_avx512}/cnProc_gen_BG1_avx512.c (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/{generator_avx512 => generator_cnProc_avx512}/cnProc_gen_BG2_avx512.c (98%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/{generator_avx512 => generator_cnProc_avx512}/cnProc_gen_avx512 (80%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/{generator_avx512 => generator_cnProc_avx512}/main.c (100%) create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc_avx512/sauvegarde.tar.gz create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z104_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z10_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z112_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z11_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z120_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z128_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z12_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z13_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z144_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z14_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z15_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z160_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z16_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z176_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z18_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z192_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z208_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z20_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z224_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z22_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z240_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z24_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z256_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z26_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z288_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z28_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z2_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z30_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z320_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z32_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z352_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z36_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z384_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z3_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z40_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z44_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z48_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z4_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z52_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z56_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z5_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z60_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z64_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z6_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z72_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z7_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z80_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z88_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z8_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z96_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z9_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z104_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z10_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z112_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z11_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z120_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z128_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z12_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z13_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z144_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z14_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z15_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z160_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z16_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z176_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z18_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z192_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z208_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z20_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z224_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z22_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z240_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z24_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z256_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z26_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z288_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z28_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z2_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z30_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z320_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z32_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z352_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z36_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z384_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z3_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z40_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z44_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z48_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z4_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z52_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z56_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z5_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z60_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z64_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z6_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z72_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z7_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z80_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z88_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z8_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z96_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z9_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z104_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z10_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z112_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z11_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z120_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z128_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z12_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z13_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z144_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z14_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z15_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z160_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z16_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z176_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z18_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z192_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z208_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z20_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z224_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z22_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z240_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z24_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z256_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z26_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z288_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z28_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z2_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z30_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z320_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z32_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z352_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z36_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z384_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z3_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z40_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z44_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z48_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z4_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z52_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z56_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z5_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z60_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z64_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z6_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z72_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z7_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z80_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z88_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z8_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z96_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z9_R13_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z104_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z10_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z112_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z11_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z120_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z128_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z12_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z13_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z144_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z14_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z15_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z160_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z16_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z176_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z18_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z192_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z208_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z20_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z224_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z22_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z240_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z24_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z256_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z26_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z288_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z28_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z2_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z30_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z320_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z32_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z352_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z36_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z384_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z3_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z40_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z44_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z48_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z4_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z52_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z56_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z5_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z60_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z64_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z6_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z72_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z7_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z80_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z88_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z8_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z96_R15_AVX2.c create mode 100644 openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z9_R15_AVX2.c rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z104_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z104_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z9_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z10_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z112_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z112_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z11_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z11_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z120_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z120_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z128_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z128_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z12_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z12_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z14_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z13_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z144_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z144_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z13_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z14_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z15_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z15_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z160_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z160_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z16_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z16_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z176_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z176_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z18_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z18_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z192_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z192_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z208_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z208_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z20_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z20_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z224_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z224_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z22_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z22_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z240_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z240_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z24_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z24_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z256_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z256_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z26_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z26_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z288_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z288_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z28_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z28_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z2_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z2_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z30_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z30_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z320_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z320_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z32_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z32_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z352_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z352_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z36_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z36_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z384_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z384_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z3_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z3_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z40_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z40_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z44_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z44_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z48_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z48_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z4_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z4_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z52_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z52_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z56_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z56_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z5_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z5_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z60_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z60_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z64_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z64_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z6_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z6_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z72_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z72_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z7_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z7_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z80_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z80_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z88_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z88_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z8_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z8_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z96_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z96_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG1_Z10_13_AVX2.c => cnProc/nrLDPC_cnProc_BG1_Z9_R13_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z104_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z104_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z10_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z10_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z112_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z112_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z11_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z11_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z120_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z120_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z128_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z128_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z12_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z12_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z14_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z13_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z144_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z144_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z13_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z14_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z15_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z15_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z160_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z160_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z16_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z16_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z176_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z176_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z18_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z18_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z192_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z192_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z208_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z208_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z20_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z20_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z224_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z224_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z22_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z22_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z240_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z240_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z24_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z24_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z256_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z256_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z26_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z26_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z288_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z288_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z28_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z28_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z2_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z2_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z30_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z30_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z320_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z320_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z32_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z32_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z352_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z352_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z36_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z36_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z384_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z384_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z3_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z3_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z40_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z40_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z44_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z44_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z48_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z48_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z4_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z4_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z52_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z52_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z56_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z56_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z5_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z5_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z60_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z60_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z64_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z64_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z6_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z6_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z72_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z72_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z7_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z7_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z80_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z80_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z88_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z88_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z8_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z8_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z96_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z96_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{avx2/nrLDPC_cnProc_BG2_Z9_15_AVX2.c => cnProc/nrLDPC_cnProc_BG2_Z9_R15_AVX2.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z104_13_AVX512.c => nrLDPC_cnProc_BG1_Z104_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z9_13_AVX512.c => nrLDPC_cnProc_BG1_Z10_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z112_13_AVX512.c => nrLDPC_cnProc_BG1_Z112_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z12_13_AVX512.c => nrLDPC_cnProc_BG1_Z11_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z120_13_AVX512.c => nrLDPC_cnProc_BG1_Z120_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z128_13_AVX512.c => nrLDPC_cnProc_BG1_Z128_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z11_13_AVX512.c => nrLDPC_cnProc_BG1_Z12_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z13_13_AVX512.c => nrLDPC_cnProc_BG1_Z13_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z144_13_AVX512.c => nrLDPC_cnProc_BG1_Z144_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z14_13_AVX512.c => nrLDPC_cnProc_BG1_Z14_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z15_13_AVX512.c => nrLDPC_cnProc_BG1_Z15_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z160_13_AVX512.c => nrLDPC_cnProc_BG1_Z160_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z16_13_AVX512.c => nrLDPC_cnProc_BG1_Z16_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z176_13_AVX512.c => nrLDPC_cnProc_BG1_Z176_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z18_13_AVX512.c => nrLDPC_cnProc_BG1_Z18_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z192_13_AVX512.c => nrLDPC_cnProc_BG1_Z192_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z208_13_AVX512.c => nrLDPC_cnProc_BG1_Z208_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z20_13_AVX512.c => nrLDPC_cnProc_BG1_Z20_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z224_13_AVX512.c => nrLDPC_cnProc_BG1_Z224_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z22_13_AVX512.c => nrLDPC_cnProc_BG1_Z22_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z240_13_AVX512.c => nrLDPC_cnProc_BG1_Z240_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z24_13_AVX512.c => nrLDPC_cnProc_BG1_Z24_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z256_13_AVX512.c => nrLDPC_cnProc_BG1_Z256_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z26_13_AVX512.c => nrLDPC_cnProc_BG1_Z26_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z288_13_AVX512.c => nrLDPC_cnProc_BG1_Z288_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z28_13_AVX512.c => nrLDPC_cnProc_BG1_Z28_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z3_13_AVX512.c => nrLDPC_cnProc_BG1_Z2_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z30_13_AVX512.c => nrLDPC_cnProc_BG1_Z30_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z320_13_AVX512.c => nrLDPC_cnProc_BG1_Z320_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z32_13_AVX512.c => nrLDPC_cnProc_BG1_Z32_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z352_13_AVX512.c => nrLDPC_cnProc_BG1_Z352_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z36_13_AVX512.c => nrLDPC_cnProc_BG1_Z36_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z384_13_AVX512.c => nrLDPC_cnProc_BG1_Z384_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z2_13_AVX512.c => nrLDPC_cnProc_BG1_Z3_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z40_13_AVX512.c => nrLDPC_cnProc_BG1_Z40_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z44_13_AVX512.c => nrLDPC_cnProc_BG1_Z44_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z48_13_AVX512.c => nrLDPC_cnProc_BG1_Z48_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z6_13_AVX512.c => nrLDPC_cnProc_BG1_Z4_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z52_13_AVX512.c => nrLDPC_cnProc_BG1_Z52_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z56_13_AVX512.c => nrLDPC_cnProc_BG1_Z56_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z4_13_AVX512.c => nrLDPC_cnProc_BG1_Z5_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z60_13_AVX512.c => nrLDPC_cnProc_BG1_Z60_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z64_13_AVX512.c => nrLDPC_cnProc_BG1_Z64_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z5_13_AVX512.c => nrLDPC_cnProc_BG1_Z6_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z72_13_AVX512.c => nrLDPC_cnProc_BG1_Z72_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z7_13_AVX512.c => nrLDPC_cnProc_BG1_Z7_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z80_13_AVX512.c => nrLDPC_cnProc_BG1_Z80_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z88_13_AVX512.c => nrLDPC_cnProc_BG1_Z88_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z8_13_AVX512.c => nrLDPC_cnProc_BG1_Z8_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z96_13_AVX512.c => nrLDPC_cnProc_BG1_Z96_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG1_Z10_13_AVX512.c => nrLDPC_cnProc_BG1_Z9_R13_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z104_15_AVX512.c => nrLDPC_cnProc_BG2_Z104_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z10_15_AVX512.c => nrLDPC_cnProc_BG2_Z10_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z112_15_AVX512.c => nrLDPC_cnProc_BG2_Z112_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z11_15_AVX512.c => nrLDPC_cnProc_BG2_Z11_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z120_15_AVX512.c => nrLDPC_cnProc_BG2_Z120_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z128_15_AVX512.c => nrLDPC_cnProc_BG2_Z128_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z12_15_AVX512.c => nrLDPC_cnProc_BG2_Z12_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z14_15_AVX512.c => nrLDPC_cnProc_BG2_Z13_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z144_15_AVX512.c => nrLDPC_cnProc_BG2_Z144_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z13_15_AVX512.c => nrLDPC_cnProc_BG2_Z14_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z15_15_AVX512.c => nrLDPC_cnProc_BG2_Z15_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z160_15_AVX512.c => nrLDPC_cnProc_BG2_Z160_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z16_15_AVX512.c => nrLDPC_cnProc_BG2_Z16_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z176_15_AVX512.c => nrLDPC_cnProc_BG2_Z176_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z18_15_AVX512.c => nrLDPC_cnProc_BG2_Z18_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z192_15_AVX512.c => nrLDPC_cnProc_BG2_Z192_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z208_15_AVX512.c => nrLDPC_cnProc_BG2_Z208_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z20_15_AVX512.c => nrLDPC_cnProc_BG2_Z20_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z224_15_AVX512.c => nrLDPC_cnProc_BG2_Z224_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z22_15_AVX512.c => nrLDPC_cnProc_BG2_Z22_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z240_15_AVX512.c => nrLDPC_cnProc_BG2_Z240_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z24_15_AVX512.c => nrLDPC_cnProc_BG2_Z24_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z256_15_AVX512.c => nrLDPC_cnProc_BG2_Z256_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z26_15_AVX512.c => nrLDPC_cnProc_BG2_Z26_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z288_15_AVX512.c => nrLDPC_cnProc_BG2_Z288_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z28_15_AVX512.c => nrLDPC_cnProc_BG2_Z28_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z2_15_AVX512.c => nrLDPC_cnProc_BG2_Z2_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z30_15_AVX512.c => nrLDPC_cnProc_BG2_Z30_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z320_15_AVX512.c => nrLDPC_cnProc_BG2_Z320_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z32_15_AVX512.c => nrLDPC_cnProc_BG2_Z32_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z352_15_AVX512.c => nrLDPC_cnProc_BG2_Z352_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z36_15_AVX512.c => nrLDPC_cnProc_BG2_Z36_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z384_15_AVX512.c => nrLDPC_cnProc_BG2_Z384_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z3_15_AVX512.c => nrLDPC_cnProc_BG2_Z3_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z40_15_AVX512.c => nrLDPC_cnProc_BG2_Z40_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z44_15_AVX512.c => nrLDPC_cnProc_BG2_Z44_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z48_15_AVX512.c => nrLDPC_cnProc_BG2_Z48_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z6_15_AVX512.c => nrLDPC_cnProc_BG2_Z4_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z52_15_AVX512.c => nrLDPC_cnProc_BG2_Z52_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z56_15_AVX512.c => nrLDPC_cnProc_BG2_Z56_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z4_15_AVX512.c => nrLDPC_cnProc_BG2_Z5_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z60_15_AVX512.c => nrLDPC_cnProc_BG2_Z60_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z64_15_AVX512.c => nrLDPC_cnProc_BG2_Z64_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z5_15_AVX512.c => nrLDPC_cnProc_BG2_Z6_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z72_15_AVX512.c => nrLDPC_cnProc_BG2_Z72_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z7_15_AVX512.c => nrLDPC_cnProc_BG2_Z7_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z80_15_AVX512.c => nrLDPC_cnProc_BG2_Z80_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z88_15_AVX512.c => nrLDPC_cnProc_BG2_Z88_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z8_15_AVX512.c => nrLDPC_cnProc_BG2_Z8_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z96_15_AVX512.c => nrLDPC_cnProc_BG2_Z96_R15_AVX512.c} (99%) rename openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/{nrLDPC_cnProc_BG2_Z9_15_AVX512.c => nrLDPC_cnProc_BG2_Z9_R15_AVX512.c} (99%) diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index c9307733b7..51ec0bc4d7 100644 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -139,7 +139,7 @@ else (CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l") if(EXISTS "/proc/cpuinfo") file(STRINGS "/proc/cpuinfo" CPUINFO REGEX flags LIMIT_COUNT 1) if (CPUINFO MATCHES "avx512bw") - set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -mavx512bw -march=skylake-avx512 -mtune=skylake-avx512" ) + set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -mavx512bw -march=skylake-avx512 -mtune=skylake-avx512 " ) set(COMPILATION_AVX2 "True") else() if (CPUINFO MATCHES "avx2") diff --git a/cmake_targets/ldpctest_BG_1_Zc_176_rate_1-3_block_length_3848_maxit_5.txt b/cmake_targets/ldpctest_BG_1_Zc_176_rate_1-3_block_length_3848_maxit_5.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cmake_targets/ldpctest_BG_1_Zc_320_rate_1-3_block_length_7000_maxit_5.txt b/cmake_targets/ldpctest_BG_1_Zc_320_rate_1-3_block_length_7000_maxit_5.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cmake_targets/ldpctest_BG_1_Zc_384_rate_1-3_block_length_8000_maxit_5.txt b/cmake_targets/ldpctest_BG_1_Zc_384_rate_1-3_block_length_8000_maxit_5.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cmake_targets/ldpctest_BG_1_Zc_384_rate_1-3_block_length_8400_maxit_5.txt b/cmake_targets/ldpctest_BG_1_Zc_384_rate_1-3_block_length_8400_maxit_5.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cmake_targets/ldpctest_BG_1_Zc_384_rate_1-3_block_length_8448_maxit_10.txt b/cmake_targets/ldpctest_BG_1_Zc_384_rate_1-3_block_length_8448_maxit_10.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cmake_targets/ldpctest_BG_1_Zc_384_rate_1-3_block_length_8448_maxit_5.txt b/cmake_targets/ldpctest_BG_1_Zc_384_rate_1-3_block_length_8448_maxit_5.txt index 187904c0ab..bb75af1367 100644 --- a/cmake_targets/ldpctest_BG_1_Zc_384_rate_1-3_block_length_8448_maxit_5.txt +++ b/cmake_targets/ldpctest_BG_1_Zc_384_rate_1-3_block_length_8448_maxit_5.txt @@ -1,58 +1,65 @@ SNR BLER BER UNCODED_BER ENCODER_MEAN ENCODER_STD ENCODER_MAX DECODER_TIME_MEAN DECODER_TIME_STD DECODER_TIME_MAX DECODER_ITER_MEAN DECODER_ITER_STD DECODER_ITER_MAX --2.000000 1.000000 0.347893 0.258602 345.413345 0.000004 345.413345 381.327587 0.000008 381.327587 5.000000 0.000000 5 --1.900000 1.000000 0.342330 0.248501 50.433975 -nan 50.433975 303.603786 0.000004 303.603786 5.000000 0.000000 5 --1.800000 1.000000 0.331676 0.251618 45.912247 -nan 45.912247 299.675187 -nan 299.675187 5.000000 0.000000 5 --1.700000 1.000000 0.347538 0.250592 43.845468 0.000001 43.845468 309.496757 0.000002 309.496757 5.000000 0.000000 5 --1.600000 1.000000 0.330374 0.240728 42.153623 -nan 42.153623 298.761092 0.000005 298.761092 5.000000 0.000000 5 --1.500000 1.000000 0.337950 0.241990 40.885619 -nan 40.885619 309.676632 0.000003 309.676632 5.000000 0.000000 5 --1.400000 1.000000 0.328007 0.242661 40.818426 0.000001 40.818426 297.890119 -nan 297.890119 5.000000 0.000000 5 --1.300000 1.000000 0.334162 0.242543 42.224997 -nan 42.224997 300.635954 0.000004 300.635954 5.000000 0.000000 5 --1.200000 1.000000 0.326823 0.239504 41.281892 0.000000 41.281892 311.391067 0.000004 311.391067 5.000000 0.000000 5 --1.100000 1.000000 0.327888 0.234020 41.594545 0.000000 41.594545 299.677245 0.000004 299.677245 5.000000 0.000000 5 --1.000000 1.000000 0.319010 0.237374 41.687210 0.000001 41.687210 312.381757 0.000002 312.381757 5.000000 0.000000 5 --0.900000 1.000000 0.331439 0.238202 41.645207 0.000000 41.645207 300.158539 0.000002 300.158539 5.000000 0.000000 5 --0.800000 1.000000 0.317945 0.228220 41.391902 0.000000 41.391902 299.700647 0.000004 299.700647 5.000000 0.000000 5 --0.700000 1.000000 0.334280 0.224708 42.384978 -nan 42.384978 298.769362 0.000003 298.769362 5.000000 0.000000 5 --0.600000 1.000000 0.299006 0.219579 42.773106 -nan 42.773106 299.787052 -nan 299.787052 5.000000 0.000000 5 --0.500000 1.000000 0.318774 0.220644 41.325048 0.000000 41.325048 316.815372 0.000002 316.815372 5.000000 0.000000 5 --0.400000 1.000000 0.303385 0.218513 42.267662 -nan 42.267662 297.842164 0.000000 297.842164 5.000000 0.000000 5 --0.300000 1.000000 0.318300 0.214489 40.771762 0.000001 40.771762 298.690724 -nan 298.690724 5.000000 0.000000 5 --0.200000 1.000000 0.288944 0.210543 43.190243 -nan 43.190243 297.980015 0.000004 297.980015 5.000000 0.000000 5 --0.100000 1.000000 0.301373 0.213187 42.336492 0.000001 42.336492 299.350576 0.000003 299.350576 5.000000 0.000000 5 -0.000000 1.000000 0.285038 0.205216 42.349820 -nan 42.349820 307.925299 0.000005 307.925299 5.000000 0.000000 5 -0.100000 1.000000 0.288707 0.205650 41.676366 0.000000 41.676366 299.765988 0.000003 299.765988 5.000000 0.000000 5 -0.200000 1.000000 0.288826 0.204506 100.891392 -nan 100.891392 312.470803 -nan 312.470803 5.000000 0.000000 5 -0.300000 1.000000 0.293561 0.202099 75.597190 -nan 75.597190 300.678868 -nan 300.678868 5.000000 0.000000 5 -0.400000 1.000000 0.261009 0.194444 55.588598 0.000000 55.588598 311.268286 0.000003 311.268286 5.000000 0.000000 5 -0.500000 1.000000 0.254025 0.192945 41.310789 0.000000 41.310789 300.349503 0.000001 300.349503 5.000000 0.000000 5 -0.600000 1.000000 0.264560 0.195234 41.309234 -nan 41.309234 309.563935 -nan 309.563935 5.000000 0.000000 5 -0.700000 1.000000 0.263021 0.190696 40.962137 -nan 40.962137 299.080861 -nan 299.080861 5.000000 0.000000 5 -0.800000 1.000000 0.234967 0.185567 40.948828 0.000000 40.948828 298.705728 -nan 298.705728 5.000000 0.000000 5 -0.900000 1.000000 0.208688 0.181305 40.738823 -nan 40.738823 306.477783 0.000003 306.477783 5.000000 0.000000 5 -1.000000 1.000000 0.220526 0.182410 41.767858 0.000000 41.767858 300.293807 -nan 300.293807 5.000000 0.000000 5 -1.100000 1.000000 0.195076 0.176176 41.232798 0.000000 41.232798 324.354057 0.000004 324.354057 5.000000 0.000000 5 -1.200000 1.000000 0.174598 0.170889 40.813436 0.000001 40.813436 298.380591 -nan 298.380591 5.000000 0.000000 5 -1.300000 1.000000 0.185724 0.172546 45.371795 0.000000 45.371795 301.953555 0.000003 301.953555 5.000000 0.000000 5 -1.400000 1.000000 0.159446 0.172704 40.402160 0.000000 40.402160 307.144539 0.000004 307.144539 5.000000 0.000000 5 -1.500000 1.000000 0.106179 0.160906 41.177388 -nan 41.177388 300.853580 -nan 300.853580 5.000000 0.000000 5 -1.600000 1.000000 0.129735 0.162879 41.402803 0.000001 41.402803 299.876336 0.000004 299.876336 5.000000 0.000000 5 -1.700000 1.000000 0.106889 0.158460 40.716819 -nan 40.716819 330.484923 0.000004 330.484923 5.000000 0.000000 5 -1.800000 1.000000 0.090554 0.156132 41.886107 0.000001 41.886107 299.725683 0.000002 299.725683 5.000000 0.000000 5 -1.900000 1.000000 0.078717 0.150489 40.852836 -nan 40.852836 300.706948 -nan 300.706948 5.000000 0.000000 5 -2.000000 1.000000 0.058357 0.152817 41.219907 0.000000 41.219907 299.323293 0.000004 299.323293 5.000000 0.000000 5 -2.100000 1.000000 0.042377 0.144689 41.417887 -nan 41.417887 301.167789 -nan 301.167789 5.000000 0.000000 5 -2.200000 1.000000 0.034091 0.144255 41.088578 -nan 41.088578 300.078545 -nan 300.078545 5.000000 0.000000 5 -2.300000 1.000000 0.028883 0.141769 40.788108 0.000001 40.788108 299.349223 -nan 299.349223 5.000000 0.000000 5 -2.400000 1.000000 0.017992 0.137745 40.596133 -nan 40.596133 299.495972 0.000003 299.495972 5.000000 0.000000 5 -2.500000 1.000000 0.015152 0.140309 40.886604 -nan 40.886604 300.679262 0.000001 300.679262 5.000000 0.000000 5 -2.600000 1.000000 0.012547 0.136127 40.733922 0.000001 40.733922 299.853799 0.000003 299.853799 5.000000 0.000000 5 -2.700000 1.000000 0.004498 0.128985 40.587111 0.000000 40.587111 299.787993 -nan 299.787993 5.000000 0.000000 5 -2.800000 1.000000 0.012311 0.131076 39.997159 0.000000 39.997159 299.736713 0.000004 299.736713 5.000000 0.000000 5 -2.900000 1.000000 0.003196 0.125158 41.180559 -nan 41.180559 299.685145 0.000004 299.685145 5.000000 0.000000 5 -3.000000 1.000000 0.003314 0.125592 40.826417 -nan 40.826417 306.487443 -nan 306.487443 5.000000 0.000000 5 -3.100000 1.000000 0.003078 0.123382 41.185242 0.000001 41.185242 300.970511 0.000002 300.970511 5.000000 0.000000 5 -3.200000 1.000000 0.001302 0.119200 40.848441 -nan 40.848441 299.774774 -nan 299.774774 5.000000 0.000000 5 -3.300000 1.000000 0.002249 0.116438 41.450744 0.000000 41.450744 313.562416 0.000003 313.562416 5.000000 0.000000 5 -3.400000 1.000000 0.000592 0.111979 41.094820 -nan 41.094820 301.054252 0.000002 301.054252 5.000000 0.000000 5 -3.500000 1.000000 0.000237 0.110598 40.427126 -nan 40.427126 299.461379 0.000003 299.461379 5.000000 0.000000 5 -3.600000 0.000000 0.000000 0.110361 40.306813 0.000001 40.306813 305.353571 -nan 305.353571 5.000000 0.000000 5 +-2.000000 1.000000 0.346710 0.258207 43.602415 30.126226 341.472109 216.438613 10.939821 319.554933 5.000000 0.000000 5 +-1.900000 1.000000 0.344876 0.255716 41.206220 4.019975 56.843517 216.302939 3.270367 233.994957 5.000000 0.000000 5 +-1.800000 1.000000 0.342785 0.253097 40.851186 3.896434 56.430195 215.430289 4.428097 246.536045 5.000000 0.000000 5 +-1.700000 1.000000 0.340844 0.251049 40.901418 3.745278 64.127024 215.529577 4.618868 240.568501 5.000000 0.000000 5 +-1.600000 1.000000 0.339047 0.248977 41.431427 4.101305 57.556777 215.147073 3.634402 238.697868 5.000000 0.000000 5 +-1.500000 1.000000 0.336629 0.246285 41.620505 4.581042 57.739456 215.078678 3.846847 238.079346 5.000000 0.000000 5 +-1.400000 1.000000 0.335457 0.243642 41.387865 4.240439 57.124142 215.228245 3.647046 236.904668 5.000000 0.000000 5 +-1.300000 1.000000 0.332997 0.241009 41.443562 4.371919 57.671402 215.273786 3.292128 232.785466 5.000000 0.000000 5 +-1.200000 1.000000 0.330665 0.238534 40.812640 3.650784 56.246234 214.904536 3.893906 244.015660 5.000000 0.000000 5 +-1.100000 1.000000 0.329331 0.236302 40.565430 3.404037 56.668872 215.151626 4.975081 244.228979 5.000000 0.000000 5 +-1.000000 1.000000 0.326340 0.233799 40.984374 3.867443 58.055435 214.392230 2.357469 220.968495 5.000000 0.000000 5 +-0.900000 1.000000 0.324751 0.230838 40.863863 4.143883 64.125643 215.614137 5.189590 242.780171 5.000000 0.000000 5 +-0.800000 1.000000 0.321135 0.228471 40.470152 3.513784 57.612116 214.727859 3.845100 242.821632 5.000000 0.000000 5 +-0.700000 1.000000 0.318744 0.225573 41.309409 4.026191 57.778096 214.920451 4.535966 242.414953 5.000000 0.000000 5 +-0.600000 1.000000 0.316129 0.222700 41.204626 3.124997 56.968813 215.387771 4.057238 237.436606 5.000000 0.000000 5 +-0.500000 1.000000 0.314128 0.220380 40.765115 3.394491 56.267980 215.377921 4.069656 240.466822 5.000000 0.000000 5 +-0.400000 1.000000 0.310958 0.218014 41.093157 4.003835 59.711327 215.239180 3.327907 234.288949 5.000000 0.000000 5 +-0.300000 1.000000 0.304918 0.214796 41.797207 4.146920 57.898771 216.063740 3.695298 241.591743 5.000000 0.000000 5 +-0.200000 1.000000 0.303232 0.212273 41.030377 3.715740 56.810498 214.633968 3.459259 236.183440 5.000000 0.000000 5 +-0.100000 1.000000 0.298946 0.209960 40.968387 3.286066 56.947886 214.652174 3.930641 239.869339 5.000000 0.000000 5 +0.000000 1.000000 0.294872 0.207036 40.536720 2.548956 56.696602 214.365610 3.293869 234.367863 5.000000 0.000000 5 +0.100000 1.000000 0.288568 0.204592 40.484272 3.071800 57.461835 214.472268 3.512439 239.158665 5.000000 0.000000 5 +0.200000 1.000000 0.282018 0.201547 40.681261 3.278471 55.951967 214.294295 3.840460 243.284465 5.000000 0.000000 5 +0.300000 1.000000 0.279144 0.198894 40.435529 2.499194 56.196889 214.494088 4.754185 243.060995 5.000000 0.000000 5 +0.400000 1.000000 0.272107 0.196146 40.439310 2.236700 56.900807 214.233221 2.429697 221.554971 5.000000 0.000000 5 +0.500000 1.000000 0.264304 0.193699 40.079304 2.102994 56.885928 215.212068 2.867987 222.409413 5.000000 0.000000 5 +0.600000 1.000000 0.254976 0.190952 40.938251 2.319068 57.553216 215.858396 3.257873 223.568005 5.000000 0.000000 5 +0.700000 1.000000 0.249426 0.188038 41.563554 3.790154 57.245468 214.607164 2.598470 222.620303 5.000000 0.000000 5 +0.800000 1.000000 0.236938 0.185676 40.644131 3.390736 56.250863 214.787514 3.016321 224.174840 5.000000 0.000000 5 +0.900000 1.000000 0.224528 0.182548 41.177649 3.753531 57.657192 214.638930 3.869935 242.175272 5.000000 0.000000 5 +1.000000 1.000000 0.212635 0.179447 41.573615 4.514914 56.159346 214.699737 3.876814 241.176210 5.000000 0.000000 5 +1.100000 1.000000 0.201210 0.177071 41.261829 3.264320 56.243301 214.951544 2.847856 222.583377 5.000000 0.000000 5 +1.200000 1.000000 0.183951 0.174506 41.683136 3.591689 56.992613 214.584652 3.373178 234.362666 5.000000 0.000000 5 +1.300000 1.000000 0.173395 0.171834 40.814328 3.204918 56.758830 215.230164 3.553699 238.588538 5.000000 0.000000 5 +1.400000 1.000000 0.152049 0.168623 41.412958 4.196153 57.855401 215.104553 3.855987 238.806435 5.000000 0.000000 5 +1.500000 1.000000 0.137067 0.165760 40.865453 2.472355 57.692788 215.112473 2.817110 222.469712 5.000000 0.000000 5 +1.600000 1.000000 0.119800 0.162857 41.340190 3.443653 56.853505 215.173558 2.871523 223.737602 5.000000 0.000000 5 +1.700000 1.000000 0.105374 0.160314 41.913044 4.326664 61.356272 215.168234 3.325743 234.564531 5.000000 0.000000 5 +1.800000 1.000000 0.089974 0.157458 40.750192 2.697542 57.266120 214.802052 3.061822 232.936883 5.000000 0.000000 5 +1.900000 1.000000 0.077899 0.154930 40.986799 3.782287 56.577477 214.970573 3.337138 232.486819 5.000000 0.000000 5 +2.000000 1.000000 0.064498 0.151912 40.973867 3.733968 57.266469 214.460835 4.009518 245.990164 5.000000 0.000000 5 +2.100000 1.000000 0.055153 0.149119 41.501986 4.068195 58.938014 215.028530 4.322608 242.986899 5.000000 0.000000 5 +2.200000 1.000000 0.043084 0.146548 40.912591 3.140756 56.434856 215.261084 2.631197 222.724293 5.000000 0.000000 5 +2.300000 1.000000 0.032169 0.143665 40.804191 2.644521 55.770242 215.134604 4.499185 240.916434 5.000000 0.000000 5 +2.400000 1.000000 0.025889 0.141218 41.065216 2.783687 57.783689 214.520582 3.945613 238.811603 5.000000 0.000000 5 +2.500000 1.000000 0.019264 0.138524 41.211270 2.448662 57.622551 214.922236 2.973268 230.669525 5.000000 0.000000 5 +2.600000 1.000000 0.013900 0.135256 40.354411 2.250096 55.698937 214.996483 3.189890 234.888937 5.000000 0.000000 5 +2.700000 1.000000 0.009590 0.132552 41.244662 3.881499 56.758825 214.759792 3.247172 234.516795 5.000000 0.000000 5 +2.800000 1.000000 0.006381 0.129862 41.636845 4.629420 56.879917 215.118519 4.535658 246.588967 5.000000 0.000000 5 +2.900000 1.000000 0.004505 0.127161 41.056717 3.728615 56.343533 215.634561 3.446083 235.626106 5.000000 0.000000 5 +3.000000 1.000000 0.003107 0.124625 41.763560 4.761839 62.852163 214.987054 4.100187 244.479813 5.000000 0.000000 5 +3.100000 1.000000 0.001585 0.121596 41.488940 3.655265 56.817517 215.049416 3.036645 231.524449 5.000000 0.000000 5 +3.200000 0.990000 0.000884 0.119036 41.899580 4.667199 62.415123 215.081178 3.177671 232.511648 5.000000 0.000000 5 +3.300000 0.980000 0.000665 0.116153 41.752611 3.754668 57.178144 215.574362 3.084230 229.518521 5.000000 0.000000 5 +3.400000 0.790000 0.000277 0.113482 41.601818 3.333514 55.861571 215.582128 3.219449 226.902719 5.000000 0.000000 5 +3.500000 0.700000 0.000179 0.111022 42.147840 4.133196 57.255484 215.854669 3.893844 242.048395 5.000000 0.000000 5 +3.600000 0.410000 0.000069 0.108080 40.747050 3.759419 63.745698 215.804914 2.568863 222.540313 5.000000 0.000000 5 +3.700000 0.370000 0.000060 0.105610 41.386558 3.815417 56.528228 215.889033 2.973628 224.110377 5.000000 0.000000 5 +3.800000 0.130000 0.000019 0.103046 41.389957 3.987060 57.528132 216.368785 3.604357 233.239650 5.000000 0.000000 5 +3.900000 0.110000 0.000013 0.100373 41.026006 2.726123 56.144907 216.842031 4.984859 241.533824 5.000000 0.000000 5 +4.000000 0.040000 0.000005 0.097515 41.535921 3.298320 56.226860 216.230174 3.561244 238.655176 5.000000 0.000000 5 +4.100000 0.020000 0.000002 0.095597 41.107849 2.874834 55.301615 216.417801 3.911892 236.928735 5.000000 0.000000 5 +4.200000 0.010000 0.000001 0.091987 40.473716 2.580630 55.248263 216.739394 4.297853 245.792709 5.000000 0.000000 5 +4.300000 0.000000 0.000000 0.090448 40.613263 2.726066 56.542856 217.487654 4.100344 239.897164 5.000000 0.000000 5 diff --git a/cmake_targets/ldpctest_BG_1_Zc_384_rate_2-3_block_length_8448_maxit_5.txt b/cmake_targets/ldpctest_BG_1_Zc_384_rate_2-3_block_length_8448_maxit_5.txt deleted file mode 100644 index a52340ec27..0000000000 --- a/cmake_targets/ldpctest_BG_1_Zc_384_rate_2-3_block_length_8448_maxit_5.txt +++ /dev/null @@ -1,72 +0,0 @@ -SNR BLER BER UNCODED_BER ENCODER_MEAN ENCODER_STD ENCODER_MAX DECODER_TIME_MEAN DECODER_TIME_STD DECODER_TIME_MAX DECODER_ITER_MEAN DECODER_ITER_STD DECODER_ITER_MAX --2.000000 1.000000 0.207386 0.181660 350.462328 0.000002 350.462328 163.684321 -nan 163.684321 5.000000 0.000000 5 --1.900000 1.000000 0.203362 0.181424 49.691355 0.000000 49.691355 106.612229 -nan 106.612229 5.000000 0.000000 5 --1.800000 1.000000 0.203243 0.174874 41.156574 0.000001 41.156574 106.419533 0.000001 106.419533 5.000000 0.000000 5 --1.700000 1.000000 0.199692 0.176373 41.576557 0.000000 41.576557 106.249571 0.000001 106.249571 5.000000 0.000000 5 --1.600000 1.000000 0.191525 0.162247 41.056596 -nan 41.056596 105.518964 0.000001 105.518964 5.000000 0.000000 5 --1.500000 1.000000 0.193774 0.164378 41.485219 -nan 41.485219 106.890835 0.000001 106.890835 5.000000 0.000000 5 --1.400000 1.000000 0.192235 0.164852 41.377230 0.000000 41.377230 106.884179 0.000002 106.884179 5.000000 0.000000 5 --1.300000 1.000000 0.189157 0.157434 41.882535 -nan 41.882535 118.201437 0.000001 118.201437 5.000000 0.000000 5 --1.200000 1.000000 0.189394 0.156487 40.273742 0.000000 40.273742 108.077486 0.000001 108.077486 5.000000 0.000000 5 --1.100000 1.000000 0.180279 0.151042 41.475883 0.000000 41.475883 105.804899 0.000002 105.804899 5.000000 0.000000 5 --1.000000 1.000000 0.185133 0.150016 41.863188 -nan 41.863188 105.778227 -nan 105.778227 5.000000 0.000000 5 --0.900000 1.000000 0.180043 0.148280 41.788530 -nan 41.788530 106.533519 -nan 106.533519 5.000000 0.000000 5 --0.800000 1.000000 0.181700 0.148990 41.606549 -nan 41.606549 122.353146 -nan 122.353146 5.000000 0.000000 5 --0.700000 1.000000 0.176136 0.143071 40.958788 0.000001 40.958788 107.100677 0.000001 107.100677 5.000000 0.000000 5 --0.600000 1.000000 0.173414 0.142124 40.818434 -nan 40.818434 114.571862 0.000001 114.571862 5.000000 0.000000 5 --0.500000 1.000000 0.169744 0.136758 41.645212 -nan 41.645212 106.311549 -nan 106.311549 5.000000 0.000000 5 --0.400000 1.000000 0.170928 0.134549 42.533159 0.000000 42.533159 106.571549 0.000002 106.571549 5.000000 0.000000 5 --0.300000 1.000000 0.166312 0.131629 42.162494 -nan 42.162494 106.150186 0.000001 106.150186 5.000000 0.000000 5 --0.200000 1.000000 0.163116 0.134549 41.555882 -nan 41.555882 105.973565 -nan 105.973565 5.000000 0.000000 5 --0.100000 1.000000 0.165009 0.127525 41.716528 0.000000 41.716528 117.108125 -nan 117.108125 5.000000 0.000000 5 -0.000000 1.000000 0.153646 0.125868 42.135839 0.000001 42.135839 106.297533 0.000001 106.297533 5.000000 0.000000 5 -0.100000 1.000000 0.149503 0.116319 41.863859 0.000001 41.863859 105.946896 -nan 105.946896 5.000000 0.000000 5 -0.200000 1.000000 0.151160 0.116162 41.518563 0.000000 41.518563 106.233579 0.000001 106.233579 5.000000 0.000000 5 -0.300000 1.000000 0.151752 0.114899 108.694179 -nan 108.694179 116.888156 -nan 116.888156 5.000000 0.000000 5 -0.400000 1.000000 0.148319 0.114268 76.352135 -nan 76.352135 107.328026 0.000002 107.328026 5.000000 0.000000 5 -0.500000 1.000000 0.143229 0.108823 56.976621 -nan 56.976621 106.411111 0.000002 106.411111 5.000000 0.000000 5 -0.600000 1.000000 0.140152 0.105429 43.605068 -nan 43.605068 129.179314 -nan 129.179314 5.000000 0.000000 5 -0.700000 1.000000 0.142401 0.108665 42.849130 -nan 42.849130 106.146889 0.000002 106.146889 5.000000 0.000000 5 -0.800000 1.000000 0.134115 0.102983 41.805179 -nan 41.805179 105.963518 0.000001 105.963518 5.000000 0.000000 5 -0.900000 1.000000 0.142164 0.105193 41.508383 -nan 41.508383 105.615827 -nan 105.615827 5.000000 0.000000 5 -1.000000 1.000000 0.131392 0.095802 41.079894 -nan 41.079894 106.092172 0.000001 106.092172 5.000000 0.000000 5 -1.100000 1.000000 0.133404 0.095565 41.256573 -nan 41.256573 106.134900 0.000001 106.134900 5.000000 0.000000 5 -1.200000 1.000000 0.131984 0.093277 41.155656 0.000001 41.155656 105.820640 0.000001 105.820640 5.000000 0.000000 5 -1.300000 1.000000 0.125473 0.089883 40.216642 -nan 40.216642 105.099633 -nan 105.099633 5.000000 0.000000 5 -1.400000 1.000000 0.115649 0.083333 52.048960 0.000000 52.048960 106.145774 -nan 106.145774 5.000000 0.000000 5 -1.500000 1.000000 0.128433 0.083807 40.463956 -nan 40.463956 105.743583 -nan 105.743583 5.000000 0.000000 5 -1.600000 1.000000 0.122869 0.082071 41.049216 0.000001 41.049216 105.206197 0.000001 105.206197 5.000000 0.000000 5 -1.700000 1.000000 0.122988 0.080492 41.913872 -nan 41.913872 104.823010 -nan 104.823010 5.000000 0.000000 5 -1.800000 1.000000 0.117898 0.078362 40.812444 0.000000 40.812444 105.950499 -nan 105.950499 5.000000 0.000000 5 -1.900000 1.000000 0.117069 0.078598 41.428562 0.000000 41.428562 105.008310 0.000002 105.008310 5.000000 0.000000 5 -2.000000 1.000000 0.109730 0.070865 40.903956 -nan 40.903956 106.049516 -nan 106.049516 5.000000 0.000000 5 -2.100000 1.000000 0.110677 0.071496 40.365980 0.000000 40.365980 105.550308 -nan 105.550308 5.000000 0.000000 5 -2.200000 1.000000 0.106061 0.066840 40.098505 0.000001 40.098505 116.386458 -nan 116.386458 5.000000 0.000000 5 -2.300000 1.000000 0.107836 0.066840 41.630557 -nan 41.630557 105.830275 0.000001 105.830275 5.000000 0.000000 5 -2.400000 1.000000 0.099313 0.063131 40.906595 0.000000 40.906595 105.513603 0.000001 105.513603 5.000000 0.000000 5 -2.500000 1.000000 0.100734 0.061711 41.383906 0.000001 41.383906 106.573557 -nan 106.573557 5.000000 0.000000 5 -2.600000 1.000000 0.096828 0.056108 41.539890 -nan 41.539890 105.375623 -nan 105.375623 5.000000 0.000000 5 -2.700000 1.000000 0.097301 0.059975 40.686462 0.000000 40.686462 106.816461 0.000001 106.816461 5.000000 0.000000 5 -2.800000 1.000000 0.094342 0.055319 40.302460 0.000001 40.302460 106.105103 -nan 106.105103 5.000000 0.000000 5 -2.900000 1.000000 0.096946 0.053977 40.671276 -nan 40.671276 105.606260 -nan 105.606260 5.000000 0.000000 5 -3.000000 1.000000 0.086529 0.050821 41.382575 -nan 41.382575 106.268916 0.000001 106.268916 5.000000 0.000000 5 -3.100000 1.000000 0.088068 0.046796 40.087170 0.000001 40.087170 106.017849 -nan 106.017849 5.000000 0.000000 5 -3.200000 1.000000 0.088778 0.048690 41.208411 -nan 41.208411 106.485115 -nan 106.485115 5.000000 0.000000 5 -3.300000 1.000000 0.088660 0.045376 46.839523 0.000000 46.839523 105.171609 -nan 105.171609 5.000000 0.000000 5 -3.400000 1.000000 0.086056 0.043876 41.234103 0.000000 41.234103 105.971413 -nan 105.971413 5.000000 0.000000 5 -3.500000 1.000000 0.085346 0.044271 51.914538 0.000000 51.914538 105.250315 -nan 105.250315 5.000000 0.000000 5 -3.600000 1.000000 0.080611 0.039615 39.788348 0.000000 39.788348 105.681404 0.000001 105.681404 5.000000 0.000000 5 -3.700000 1.000000 0.081676 0.037405 41.516546 -nan 41.516546 106.541514 -nan 106.541514 5.000000 0.000000 5 -3.800000 1.000000 0.082623 0.038826 41.013898 -nan 41.013898 105.181567 0.000002 105.181567 5.000000 0.000000 5 -3.900000 1.000000 0.077770 0.034564 40.907250 -nan 40.907250 105.474242 -nan 105.474242 5.000000 0.000000 5 -4.000000 1.000000 0.075166 0.032434 40.525805 -nan 40.525805 106.856454 -nan 106.856454 5.000000 0.000000 5 -4.100000 1.000000 0.073745 0.030619 41.863868 0.000001 41.863868 104.952984 -nan 104.952984 5.000000 0.000000 5 -4.200000 1.000000 0.072206 0.028093 40.012507 0.000000 40.012507 105.829858 0.000001 105.829858 5.000000 0.000000 5 -4.300000 1.000000 0.073509 0.029040 41.265241 -nan 41.265241 106.866855 -nan 106.866855 5.000000 0.000000 5 -4.400000 1.000000 0.070312 0.028251 42.004048 -nan 42.004048 104.724794 -nan 104.724794 5.000000 0.000000 5 -4.500000 1.000000 0.071023 0.026515 40.553139 -nan 40.553139 106.168510 -nan 106.168510 5.000000 0.000000 5 -4.600000 1.000000 0.070076 0.025016 41.453892 -nan 41.453892 105.339616 -nan 105.339616 5.000000 0.000000 5 -4.700000 1.000000 0.064631 0.023438 42.209825 0.000000 42.209825 105.972866 -nan 105.972866 5.000000 0.000000 5 -4.800000 1.000000 0.063920 0.022727 41.778528 0.000001 41.778528 106.402189 0.000001 106.402189 5.000000 0.000000 5 -4.900000 1.000000 0.063447 0.018782 40.201824 0.000001 40.201824 106.177825 0.000001 106.177825 5.000000 0.000000 5 -5.000000 1.000000 0.056937 0.017677 42.106087 -nan 42.106087 106.188160 0.000000 106.188160 5.000000 0.00000 \ No newline at end of file diff --git a/cmake_targets/ldpctest_BG_2_Zc_2_rate_1-3_block_length_-27056_maxit_5.txt b/cmake_targets/ldpctest_BG_2_Zc_2_rate_1-3_block_length_-27056_maxit_5.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cmake_targets/ldpctest_BG_2_Zc_320_rate_1-3_block_length_3200_maxit_5.txt b/cmake_targets/ldpctest_BG_2_Zc_320_rate_1-3_block_length_3200_maxit_5.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cmake_targets/ldpctest_BG_2_Zc_384_rate_1-3_block_length_3840_maxit_5.txt b/cmake_targets/ldpctest_BG_2_Zc_384_rate_1-3_block_length_3840_maxit_5.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/cmake_targets/ldpctest_BG_2_Zc_3_rate_1-3_block_length_16_maxit_5.txt b/cmake_targets/ldpctest_BG_2_Zc_3_rate_1-3_block_length_16_maxit_5.txt deleted file mode 100644 index 6eea8e3e0e..0000000000 --- a/cmake_targets/ldpctest_BG_2_Zc_3_rate_1-3_block_length_16_maxit_5.txt +++ /dev/null @@ -1,152 +0,0 @@ -SNR BLER BER UNCODED_BER ENCODER_MEAN ENCODER_STD ENCODER_MAX DECODER_TIME_MEAN DECODER_TIME_STD DECODER_TIME_MAX DECODER_ITER_MEAN DECODER_ITER_STD DECODER_ITER_MAX --2.000000 1.000000 0.562500 0.320000 16.558900 -nan 16.558900 98.248806 -nan 98.248806 5.000000 0.000000 5 --1.900000 1.000000 0.625000 0.280000 5.056975 0.000000 5.056975 31.887740 0.000000 31.887740 5.000000 0.000000 5 --1.800000 1.000000 0.187500 0.140000 4.418373 -nan 4.418373 29.037403 0.000000 29.037403 5.000000 0.000000 5 --1.700000 1.000000 0.437500 0.240000 4.722354 0.000000 4.722354 29.116069 -nan 29.116069 5.000000 0.000000 5 --1.600000 1.000000 0.125000 0.120000 4.569696 0.000000 4.569696 28.901412 0.000000 28.901412 5.000000 0.000000 5 --1.500000 1.000000 0.500000 0.280000 4.363693 -nan 4.363693 29.902562 -nan 29.902562 5.000000 0.000000 5 --1.400000 1.000000 0.437500 0.280000 4.397709 -nan 4.397709 29.485381 -nan 29.485381 5.000000 0.000000 5 --1.300000 1.000000 0.500000 0.280000 4.290382 -nan 4.290382 28.529440 0.000000 28.529440 5.000000 0.000000 5 --1.200000 1.000000 0.437500 0.340000 3.894409 0.000000 3.894409 28.447450 -nan 28.447450 5.000000 0.000000 5 --1.100000 1.000000 0.375000 0.200000 4.344376 0.000000 4.344376 28.357438 -nan 28.357438 5.000000 0.000000 5 --1.000000 1.000000 0.187500 0.220000 3.817747 0.000000 3.817747 33.455113 -nan 33.455113 5.000000 0.000000 5 --0.900000 1.000000 0.250000 0.280000 4.368376 0.000000 4.368376 28.184126 -nan 28.184126 5.000000 0.000000 5 --0.800000 1.000000 0.437500 0.160000 4.477704 0.000000 4.477704 28.686771 -nan 28.686771 5.000000 0.000000 5 --0.700000 1.000000 0.437500 0.300000 4.355712 -nan 4.355712 28.232797 0.000001 28.232797 5.000000 0.000000 5 --0.600000 1.000000 0.375000 0.240000 4.262384 -nan 4.262384 34.447051 0.000000 34.447051 5.000000 0.000000 5 --0.500000 1.000000 0.375000 0.120000 4.539718 0.000000 4.539718 29.700155 0.000000 29.700155 5.000000 0.000000 5 --0.400000 1.000000 0.375000 0.220000 4.539030 0.000000 4.539030 28.796743 -nan 28.796743 5.000000 0.000000 5 --0.300000 1.000000 0.375000 0.140000 4.653669 0.000000 4.653669 30.096528 -nan 30.096528 5.000000 0.000000 5 --0.200000 1.000000 0.250000 0.180000 4.250385 -nan 4.250385 28.218130 0.000000 28.218130 5.000000 0.000000 5 --0.100000 1.000000 0.437500 0.180000 4.543033 0.000000 4.543033 28.602773 0.000000 28.602773 5.000000 0.000000 5 -0.000000 1.000000 0.500000 0.260000 4.252385 -nan 4.252385 27.672170 -nan 27.672170 5.000000 0.000000 5 -0.100000 1.000000 0.250000 0.140000 4.244451 0.000000 4.244451 27.672594 -nan 27.672594 5.000000 0.000000 5 -0.200000 1.000000 0.437500 0.100000 4.452372 -nan 4.452372 28.569440 0.000000 28.569440 5.000000 0.000000 5 -0.300000 1.000000 0.375000 0.160000 4.005736 -nan 4.005736 27.550850 0.000000 27.550850 5.000000 0.000000 5 -0.400000 1.000000 0.375000 0.080000 4.235055 0.000000 4.235055 28.246812 0.000000 28.246812 5.000000 0.000000 5 -0.500000 1.000000 0.375000 0.240000 4.916981 -nan 4.916981 31.409083 0.000000 31.409083 5.000000 0.000000 5 -0.600000 1.000000 0.437500 0.160000 4.461020 -nan 4.461020 30.399862 -nan 30.399862 5.000000 0.000000 5 -0.700000 1.000000 0.125000 0.100000 4.344377 -nan 4.344377 29.007399 -nan 29.007399 5.000000 0.000000 5 -0.800000 1.000000 0.312500 0.380000 4.237720 0.000000 4.237720 28.431454 -nan 28.431454 5.000000 0.000000 5 -0.900000 1.000000 0.250000 0.160000 4.176390 0.000000 4.176390 28.552107 -nan 28.552107 5.000000 0.000000 5 -1.000000 1.000000 0.187500 0.100000 4.611028 0.000000 4.611028 27.871487 -nan 27.871487 5.000000 0.000000 5 -1.100000 1.000000 0.375000 0.180000 4.480371 -nan 4.480371 27.896158 -nan 27.896158 5.000000 0.000000 5 -1.200000 1.000000 0.250000 0.120000 4.134394 0.000000 4.134394 27.622178 0.000000 27.622178 5.000000 0.000000 5 -1.300000 1.000000 0.437500 0.200000 4.323715 0.000000 4.323715 28.078815 -nan 28.078815 5.000000 0.000000 5 -1.400000 1.000000 0.312500 0.140000 4.280365 -nan 4.280365 29.175942 -nan 29.175942 5.000000 0.000000 5 -1.500000 1.000000 0.312500 0.140000 4.494351 -nan 4.494351 32.561044 -nan 32.561044 5.000000 0.000000 5 -1.600000 1.000000 0.125000 0.100000 4.466369 0.000000 4.466369 30.673292 -nan 30.673292 5.000000 0.000000 5 -1.700000 1.000000 0.187500 0.180000 4.412375 0.000000 4.412375 30.016683 0.000000 30.016683 5.000000 0.000000 5 -1.800000 1.000000 0.250000 0.160000 4.627027 -nan 4.627027 29.532714 -nan 29.532714 5.000000 0.000000 5 -1.900000 1.000000 0.187500 0.100000 4.265051 0.000000 4.265051 29.390721 -nan 29.390721 5.000000 0.000000 5 -2.000000 1.000000 0.312500 0.200000 4.609676 -nan 4.609676 30.795835 0.000000 30.795835 5.000000 0.000000 5 -2.100000 1.000000 0.250000 0.180000 4.649025 -nan 4.649025 28.821421 0.000000 28.821421 5.000000 0.000000 5 -2.200000 1.000000 0.062500 0.160000 4.745018 0.000000 4.745018 29.222057 0.000000 29.222057 5.000000 0.000000 5 -2.300000 1.000000 0.250000 0.120000 4.333046 -nan 4.333046 28.623435 -nan 28.623435 5.000000 0.000000 5 -2.400000 1.000000 0.187500 0.120000 4.795017 0.000000 4.795017 28.746101 -nan 28.746101 5.000000 0.000000 5 -2.500000 1.000000 0.562500 0.180000 4.248368 -nan 4.248368 30.448523 -nan 30.448523 5.000000 0.000000 5 -2.600000 1.000000 0.062500 0.140000 4.312380 -nan 4.312380 29.250725 -nan 29.250725 5.000000 0.000000 5 -2.700000 1.000000 0.375000 0.140000 4.319714 0.000000 4.319714 28.350787 -nan 28.350787 5.000000 0.000000 5 -2.800000 1.000000 0.312500 0.120000 4.172389 0.000000 4.172389 29.005404 -nan 29.005404 5.000000 0.000000 5 -2.900000 1.000000 0.250000 0.120000 4.944978 0.000000 4.944978 33.555592 -nan 33.555592 5.000000 0.000000 5 -3.000000 1.000000 0.437500 0.180000 4.529031 -nan 4.529031 29.354708 -nan 29.354708 5.000000 0.000000 5 -3.100000 1.000000 0.125000 0.140000 4.411728 -nan 4.411728 29.312859 -nan 29.312859 5.000000 0.000000 5 -3.200000 1.000000 0.250000 0.180000 4.059064 0.000000 4.059064 28.636770 0.000000 28.636770 5.000000 0.000000 5 -3.300000 1.000000 0.500000 0.120000 3.996402 0.000000 3.996402 28.211468 0.000000 28.211468 5.000000 0.000000 5 -3.400000 1.000000 0.125000 0.040000 4.909645 0.000000 4.909645 31.661710 -nan 31.661710 5.000000 0.000000 5 -3.500000 1.000000 0.375000 0.140000 4.603009 -nan 4.603009 30.342529 -nan 30.342529 5.000000 0.000000 5 -3.600000 1.000000 0.500000 0.040000 4.709684 -nan 4.709684 29.388030 0.000000 29.388030 5.000000 0.000000 5 -3.700000 1.000000 0.312500 0.080000 4.393042 0.000000 4.393042 28.605437 -nan 28.605437 5.000000 0.000000 5 -3.800000 1.000000 0.250000 0.120000 4.591689 0.000000 4.591689 29.398009 -nan 29.398009 5.000000 0.000000 5 -3.900000 1.000000 0.312500 0.080000 4.534365 0.000000 4.534365 28.915407 0.000000 28.915407 5.000000 0.000000 5 -4.000000 1.000000 0.125000 0.060000 4.476369 -nan 4.476369 28.420780 0.000000 28.420780 5.000000 0.000000 5 -4.100000 1.000000 0.250000 0.100000 4.396375 -nan 4.396375 27.914146 -nan 27.914146 5.000000 0.000000 5 -4.200000 1.000000 0.312500 0.080000 4.414355 -nan 4.414355 30.324526 -nan 30.324526 5.000000 0.000000 5 -4.300000 1.000000 0.187500 0.100000 4.094394 -nan 4.094394 29.670022 -nan 29.670022 5.000000 0.000000 5 -4.400000 1.000000 0.125000 0.100000 4.547800 0.000000 4.547800 28.900730 0.000000 28.900730 5.000000 0.000000 5 -4.500000 1.000000 0.250000 0.120000 4.229703 0.000000 4.229703 30.204544 -nan 30.204544 5.000000 0.000000 5 -4.600000 1.000000 0.375000 0.100000 4.371042 0.000000 4.371042 29.030068 0.000000 29.030068 5.000000 0.000000 5 -4.700000 1.000000 0.187500 0.060000 4.054398 -nan 4.054398 28.180132 -nan 28.180132 5.000000 0.000000 5 -4.800000 1.000000 0.437500 0.140000 5.543598 -nan 5.543598 33.959538 0.000000 33.959538 5.000000 0.000000 5 -4.900000 1.000000 0.187500 0.040000 4.659582 -nan 4.659582 30.629255 -nan 30.629255 5.000000 0.000000 5 -5.000000 1.000000 0.375000 0.020000 4.568363 0.000000 4.568363 29.642031 0.000000 29.642031 5.000000 0.000000 5 -5.100000 1.000000 0.250000 0.080000 4.759018 0.000000 4.759018 28.678100 -nan 28.678100 5.000000 0.000000 5 -5.200000 1.000000 0.187500 0.080000 4.454367 0.000000 4.454367 27.988120 0.000000 27.988120 5.000000 0.000000 5 -5.300000 1.000000 0.312500 0.080000 4.436372 0.000000 4.436372 28.547440 0.000000 28.547440 5.000000 0.000000 5 -5.400000 1.000000 0.125000 0.020000 4.363711 0.000000 4.363711 28.698766 -nan 28.698766 5.000000 0.000000 5 -5.500000 1.000000 0.187500 0.080000 4.438354 -nan 4.438354 30.491853 -nan 30.491853 5.000000 0.000000 5 -5.600000 1.000000 0.500000 0.060000 4.406355 0.000000 4.406355 30.280521 0.000000 30.280521 5.000000 0.000000 5 -5.700000 1.000000 0.250000 0.100000 4.377042 -nan 4.377042 28.816746 -nan 28.816746 5.000000 0.000000 5 -5.800000 1.000000 0.250000 0.100000 4.125727 0.000000 4.125727 28.794764 -nan 28.794764 5.000000 0.000000 5 -5.900000 1.000000 0.062500 0.040000 4.412373 -nan 4.412373 28.877411 -nan 28.877411 5.000000 0.000000 5 -6.000000 1.000000 0.187500 0.000000 4.297716 0.000000 4.297716 28.497449 -nan 28.497449 5.000000 0.000000 5 -6.100000 1.000000 0.312500 0.040000 4.266383 -nan 4.266383 28.602762 0.000000 28.602762 5.000000 0.000000 5 -6.200000 1.000000 0.312500 0.080000 4.351711 0.000000 4.351711 28.211460 -nan 28.211460 5.000000 0.000000 5 -6.300000 1.000000 0.312500 0.040000 4.279052 0.000000 4.279052 28.560120 -nan 28.560120 5.000000 0.000000 5 -6.400000 1.000000 0.375000 0.020000 4.355713 0.000000 4.355713 28.658110 -nan 28.658110 5.000000 0.000000 5 -6.500000 1.000000 0.312500 0.060000 4.288363 0.000000 4.288363 30.102535 0.000000 30.102535 5.000000 0.000000 5 -6.600000 1.000000 0.312500 0.020000 4.607677 0.000000 4.607677 30.151217 -nan 30.151217 5.000000 0.000000 5 -6.700000 1.000000 0.187500 0.000000 4.256384 0.000000 4.256384 28.896748 0.000000 28.896748 5.000000 0.000000 5 -6.800000 1.000000 0.187500 0.020000 4.527034 -nan 4.527034 28.631442 -nan 28.631442 5.000000 0.000000 5 -6.900000 1.000000 0.187500 0.020000 4.629029 0.000000 4.629029 29.180745 0.000000 29.180745 5.000000 0.000000 5 -7.000000 1.000000 0.375000 0.040000 4.590361 0.000000 4.590361 28.382779 0.000000 28.382779 5.000000 0.000000 5 -7.100000 1.000000 0.312500 0.020000 4.435038 0.000000 4.435038 28.220122 0.000000 28.220122 5.000000 0.000000 5 -7.200000 1.000000 0.250000 0.020000 4.383044 0.000000 4.383044 28.424793 -nan 28.424793 5.000000 0.000000 5 -7.300000 1.000000 0.250000 0.040000 4.101730 0.000000 4.101730 28.118147 0.000000 28.118147 5.000000 0.000000 5 -7.400000 1.000000 0.125000 0.040000 3.970402 0.000000 3.970402 28.219456 -nan 28.219456 5.000000 0.000000 5 -7.500000 1.000000 0.375000 0.040000 4.549015 -nan 4.549015 30.481869 0.000000 30.481869 5.000000 0.000000 5 -7.600000 1.000000 0.312500 0.020000 4.665690 0.000000 4.665690 28.734088 0.000000 28.734088 5.000000 0.000000 5 -7.700000 1.000000 0.187500 0.020000 4.490370 0.000000 4.490370 28.008148 0.000000 28.008148 5.000000 0.000000 5 -7.800000 1.000000 0.250000 0.020000 9.884010 0.000000 9.884010 28.440778 -nan 28.440778 5.000000 0.000000 5 -7.900000 1.000000 0.187500 0.040000 4.277716 0.000000 4.277716 28.763425 -nan 28.763425 5.000000 0.000000 5 -8.000000 1.000000 0.125000 0.020000 4.447036 -nan 4.447036 28.524094 -nan 28.524094 5.000000 0.000000 5 -8.100000 1.000000 0.250000 0.000000 4.479672 0.000000 4.479672 28.772560 0.000000 28.772560 5.000000 0.000000 5 -8.200000 1.000000 0.187500 0.020000 4.383042 -nan 4.383042 28.702093 0.000000 28.702093 5.000000 0.000000 5 -8.300000 1.000000 0.250000 0.000000 4.289049 -nan 4.289049 28.742097 -nan 28.742097 5.000000 0.000000 5 -8.400000 1.000000 0.250000 0.020000 4.756349 0.000000 4.756349 30.240650 -nan 30.240650 5.000000 0.000000 5 -8.500000 1.000000 0.250000 0.020000 4.663671 -nan 4.663671 30.713836 -nan 30.713836 5.000000 0.000000 5 -8.600000 1.000000 0.312500 0.020000 4.732378 -nan 4.732378 29.348876 -nan 29.348876 5.000000 0.000000 5 -8.700000 1.000000 0.250000 0.020000 4.403710 -nan 4.403710 28.150814 -nan 28.150814 5.000000 0.000000 5 -8.800000 1.000000 0.250000 0.020000 4.612360 0.000000 4.612360 29.196726 -nan 29.196726 5.000000 0.000000 5 -8.900000 1.000000 0.187500 0.020000 4.459038 0.000000 4.459038 28.099474 -nan 28.099474 5.000000 0.000000 5 -9.000000 1.000000 0.187500 0.020000 4.453704 0.000000 4.453704 28.049467 0.000000 28.049467 5.000000 0.000000 5 -9.100000 1.000000 0.250000 0.020000 4.443039 -nan 4.443039 27.916816 -nan 27.916816 5.000000 0.000000 5 -9.200000 1.000000 0.187500 0.000000 4.434350 0.000000 4.434350 28.470635 -nan 28.470635 5.000000 0.000000 5 -9.300000 1.000000 0.312500 0.000000 4.105062 -nan 4.105062 28.216799 -nan 28.216799 5.000000 0.000000 5 -9.400000 1.000000 0.250000 0.040000 5.181005 -nan 5.181005 31.605329 -nan 31.605329 5.000000 0.000000 5 -9.500000 1.000000 0.375000 0.000000 4.506347 0.000000 4.506347 30.239857 0.000000 30.239857 5.000000 0.000000 5 -9.600000 1.000000 0.250000 0.000000 4.637024 0.000000 4.637024 29.628692 0.000000 29.628692 5.000000 0.000000 5 -9.700000 1.000000 0.312500 0.000000 4.357045 -nan 4.357045 28.601440 -nan 28.601440 5.000000 0.000000 5 -9.800000 1.000000 0.250000 0.000000 4.279715 0.000000 4.279715 28.856745 0.000000 28.856745 5.000000 0.000000 5 -9.900000 1.000000 0.187500 0.020000 4.336378 0.000000 4.336378 28.377448 -nan 28.377448 5.000000 0.000000 5 -10.000000 1.000000 0.187500 0.020000 4.402374 0.000000 4.402374 29.169393 0.000000 29.169393 5.000000 0.000000 5 -10.100000 1.000000 0.437500 0.000000 4.843655 -nan 4.843655 30.677815 -nan 30.677815 5.000000 0.000000 5 -10.200000 1.000000 0.250000 0.000000 4.413211 -nan 4.413211 29.032526 0.000000 29.032526 5.000000 0.000000 5 -10.300000 1.000000 0.312500 0.000000 4.211722 0.000000 4.211722 28.791430 0.000000 28.791430 5.000000 0.000000 5 -10.400000 1.000000 0.312500 0.000000 4.439064 -nan 4.439064 28.281621 0.000000 28.281621 5.000000 0.000000 5 -10.500000 1.000000 0.500000 0.040000 4.121710 0.000000 4.121710 30.037887 0.000000 30.037887 5.000000 0.000000 5 -10.600000 1.000000 0.250000 0.000000 4.272383 -nan 4.272383 28.627431 -nan 28.627431 5.000000 0.000000 5 -10.700000 1.000000 0.312500 0.000000 4.491702 -nan 4.491702 28.356121 0.000000 28.356121 5.000000 0.000000 5 -10.800000 1.000000 0.187500 0.000000 4.392376 -nan 4.392376 28.664106 -nan 28.664106 5.000000 0.000000 5 -10.900000 1.000000 0.375000 0.000000 3.967071 -nan 3.967071 28.541443 0.000000 28.541443 5.000000 0.000000 5 -11.000000 1.000000 0.375000 0.000000 4.294383 -nan 4.294383 28.594777 -nan 28.594777 5.000000 0.000000 5 -11.100000 1.000000 0.437500 0.000000 4.164392 0.000000 4.164392 28.584779 -nan 28.584779 5.000000 0.000000 5 -11.200000 1.000000 0.125000 0.000000 4.315715 -nan 4.315715 27.770169 0.000000 27.770169 5.000000 0.000000 5 -11.300000 1.000000 0.312500 0.020000 4.376377 -nan 4.376377 28.887422 -nan 28.887422 5.000000 0.000000 5 -11.400000 1.000000 0.312500 0.000000 4.140392 0.000000 4.140392 28.411447 0.000000 28.411447 5.000000 0.000000 5 -11.500000 1.000000 0.250000 0.000000 4.601009 0.000000 4.601009 30.469187 0.000000 30.469187 5.000000 0.000000 5 -11.600000 1.000000 0.312500 0.000000 4.681749 0.000000 4.681749 28.638466 -nan 28.638466 5.000000 0.000000 5 -11.700000 1.000000 0.375000 0.000000 4.464371 -nan 4.464371 28.934085 -nan 28.934085 5.000000 0.000000 5 -11.800000 1.000000 0.250000 0.000000 4.650340 0.000000 4.650340 29.455266 -nan 29.455266 5.000000 0.000000 5 -11.900000 1.000000 0.312500 0.000000 4.301714 -nan 4.301714 29.464708 -nan 29.464708 5.000000 0.000000 5 -12.000000 1.000000 0.187500 0.000000 4.185721 0.000000 4.185721 28.613426 -nan 28.613426 5.000000 0.000000 5 -12.100000 1.000000 0.187500 0.000000 4.157056 -nan 4.157056 28.573427 -nan 28.573427 5.000000 0.000000 5 -12.200000 1.000000 0.312500 0.000000 4.522367 -nan 4.522367 48.212142 0.000001 48.212142 5.000000 0.000000 5 -12.300000 1.000000 0.375000 0.000000 4.847011 0.000000 4.847011 54.012409 0.000000 54.012409 5.000000 0.000000 5 -12.400000 1.000000 0.250000 0.000000 4.805679 -nan 4.805679 43.009793 0.000000 43.009793 5.000000 0.000000 5 -12.500000 1.000000 0.187500 0.000000 4.715667 0.000000 4.715667 30.502515 0.000000 30.502515 5.000000 0.000000 5 -12.600000 1.000000 0.250000 0.000000 4.708327 0.000000 4.708327 31.805709 -nan 31.805709 5.000000 0.000000 5 -12.700000 1.000000 0.187500 0.000000 4.636358 0.000000 4.636358 29.942010 0.000000 29.942010 5.000000 0.000000 5 -12.800000 1.000000 0.250000 0.000000 4.305714 0.000000 4.305714 45.956282 0.000001 45.956282 5.000000 0.000000 5 -12.900000 1.000000 0.250000 0.000000 4.592360 -nan 4.592360 29.984001 0.000000 29.984001 5.000000 0.000000 5 -13.000000 0.000000 0.000000 0.000000 4.908342 -nan 4.908342 29.444718 0.000000 29.444718 5.000000 0.000000 5 diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_cnProc.h b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_cnProc.h index 2e0f53fdc1..379fc14056 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_cnProc.h +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_cnProc.h @@ -1,3 +1,4 @@ + /* * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more * contributor license agreements. See the NOTICE file distributed with @@ -37,6 +38,344 @@ \param p_procBuf Pointer to processing buffers \param Z Lifting size */ + +#define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) + +#ifdef __AVX512BW__ +static inline void nrLDPC_cnProc_BG2_AVX512(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_procBuf, uint16_t Z) +{ + const uint8_t* lut_numCnInCnGroups = p_lut->numCnInCnGroups; + const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups; + + int8_t* cnProcBuf = p_procBuf->cnProcBuf; + int8_t* cnProcBufRes = p_procBuf->cnProcBufRes; + + __m512i* p_cnProcBuf; + __m512i* p_cnProcBufRes; + + // Number of CNs in Groups + uint32_t M; + uint32_t i; + uint32_t j; + uint32_t k; + // Offset to each bit within a group in terms of 32 Byte + uint32_t bitOffsetInGroup; + + __m512i zmm0, min, sgn, zeros,maxLLR; + zeros = _mm512_setzero_si512(); + maxLLR = _mm512_set1_epi8((char)127); + __m512i* p_cnProcBufResBit; + + const __m512i* p_ones = (__m512i*) ones512_epi8; + const __m512i* p_maxLLR = (__m512i*) maxLLR512_epi8; + + // LUT with offsets for bits that need to be processed + // 1. bit proc requires LLRs of 2. and 3. bit, 2.bits of 1. and 3. etc. + // Offsets are in units of bitOffsetInGroup + const uint8_t lut_idxCnProcG3[3][2] = {{72,144}, {0,144}, {0,72}}; + + // ===================================================================== + // Process group with 3 BNs + + if (lut_numCnInCnGroups[0] > 0) + { + // Number of groups of 32 CNs for parallel processing + // Ceil for values not divisible by 32 + M = (lut_numCnInCnGroups[0]*Z + 63)>>6; + // Set the offset to each bit within a group in terms of 32 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG2_R15[0]*NR_LDPC_ZMAX)>>6; + + // Set pointers to start of group 3 + p_cnProcBuf = (__m512i*) &cnProcBuf [lut_startAddrCnGroups[0]]; + p_cnProcBufRes = (__m512i*) &cnProcBufRes[lut_startAddrCnGroups[0]]; + + // Loop over every BN + for (j=0; j<3; j++) + { + // Set of results pointer to correct BN address + p_cnProcBufResBit = p_cnProcBufRes + (j*bitOffsetInGroup); + + __m512i *pj0 = &p_cnProcBuf[lut_idxCnProcG3[j][0]/2]; + __m512i *pj1 = &p_cnProcBuf[lut_idxCnProcG3[j][1]/2]; + + // Loop over CNs + for (i=0; i 0) + { + // Number of groups of 32 CNs for parallel processing + // Ceil for values not divisible by 32 + M = (lut_numCnInCnGroups[1]*Z + 63)>>6; + // Set the offset to each bit within a group in terms of 32 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG2_R15[1]*NR_LDPC_ZMAX)>>6; + + // Set pointers to start of group 4 + p_cnProcBuf = (__m512i*) &cnProcBuf [lut_startAddrCnGroups[1]]; + p_cnProcBufRes = (__m512i*) &cnProcBufRes[lut_startAddrCnGroups[1]]; + + // Loop over every BN + for (j=0; j<4; j++) + { + // Set of results pointer to correct BN address + p_cnProcBufResBit = p_cnProcBufRes + (j*bitOffsetInGroup); + + // Loop over CNs + for (i=0; i 0) + { + // Number of groups of 32 CNs for parallel processing + // Ceil for values not divisible by 32 + M = (lut_numCnInCnGroups[2]*Z + 63)>>6; + // Set the offset to each bit within a group in terms of 32 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG2_R15[2]*NR_LDPC_ZMAX)>>6; + + // Set pointers to start of group 5 + p_cnProcBuf = (__m512i*) &cnProcBuf [lut_startAddrCnGroups[2]]; + p_cnProcBufRes = (__m512i*) &cnProcBufRes[lut_startAddrCnGroups[2]]; + + // Loop over every BN + for (j=0; j<5; j++) + { + // Set of results pointer to correct BN address + p_cnProcBufResBit = p_cnProcBufRes + (j*bitOffsetInGroup); + + // Loop over CNs + for (i=0; i 0) + { + // Number of groups of 32 CNs for parallel processing + // Ceil for values not divisible by 32 + M = (lut_numCnInCnGroups[3]*Z + 63)>>6; + // Set the offset to each bit within a group in terms of 32 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG2_R15[3]*NR_LDPC_ZMAX)>>6; + + // Set pointers to start of group 6 + p_cnProcBuf = (__m512i*) &cnProcBuf [lut_startAddrCnGroups[3]]; + p_cnProcBufRes = (__m512i*) &cnProcBufRes[lut_startAddrCnGroups[3]]; + + // Loop over every BN + for (j=0; j<6; j++) + { + // Set of results pointer to correct BN address + p_cnProcBufResBit = p_cnProcBufRes + (j*bitOffsetInGroup); + + // Loop over CNs + for (i=0; i 0) + { + // Number of groups of 32 CNs for parallel processing + // Ceil for values not divisible by 32 + M = (lut_numCnInCnGroups[4]*Z + 63)>>6; + // Set the offset to each bit within a group in terms of 32 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG2_R15[4]*NR_LDPC_ZMAX)>>6; + + // Set pointers to start of group 8 + p_cnProcBuf = (__m512i*) &cnProcBuf [lut_startAddrCnGroups[4]]; + p_cnProcBufRes = (__m512i*) &cnProcBufRes[lut_startAddrCnGroups[4]]; + + // Loop over every BN + for (j=0; j<8; j++) + { + // Set of results pointer to correct BN address + p_cnProcBufResBit = p_cnProcBufRes + (j*bitOffsetInGroup); + + // Loop over CNs + for (i=0; i 0) + { + // Number of groups of 32 CNs for parallel processing + // Ceil for values not divisible by 32 + M = (lut_numCnInCnGroups[5]*Z + 63)>>6; + // Set the offset to each bit within a group in terms of 32 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG2_R15[5]*NR_LDPC_ZMAX)>>6; + + // Set pointers to start of group 10 + p_cnProcBuf = (__m512i*) &cnProcBuf [lut_startAddrCnGroups[5]]; + p_cnProcBufRes = (__m512i*) &cnProcBufRes[lut_startAddrCnGroups[5]]; + + // Loop over every BN + for (j=0; j<10; j++) + { + // Set of results pointer to correct BN address + p_cnProcBufResBit = p_cnProcBufRes + (j*bitOffsetInGroup); + + // Loop over CNs + for (i=0; inumCnInCnGroups; @@ -44,7 +383,7 @@ static inline void nrLDPC_cnProc_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_pr int8_t* cnProcBuf = p_procBuf->cnProcBuf; int8_t* cnProcBufRes = p_procBuf->cnProcBufRes; - + __m256i* p_cnProcBuf; __m256i* p_cnProcBufRes; @@ -95,14 +434,14 @@ static inline void nrLDPC_cnProc_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_pr for (i=0; inumCnInCnGroups; + const uint32_t* lut_startAddrCnGroups = p_lut->startAddrCnGroups; + + int8_t* cnProcBuf = p_procBuf->cnProcBuf; + int8_t* cnProcBufRes = p_procBuf->cnProcBufRes; + + __m512i* p_cnProcBuf; + __m512i* p_cnProcBufRes; + + // Number of CNs in Groups + uint32_t M; + uint32_t i; + uint32_t j; + uint32_t k; + // Offset to each bit within a group in terms of 32 Byte + uint32_t bitOffsetInGroup; + + __m512i zmm0, min, sgn, zeros,maxLLR; + + zeros = _mm512_setzero_si512(); + maxLLR = _mm512_set1_epi8((char)127); + __m512i* p_cnProcBufResBit; + + + const __m512i* p_ones = (__m512i*) ones512_epi8; + const __m512i* p_maxLLR = (__m512i*) maxLLR512_epi8; + + + + + // LUT with offsets for bits that need to be processed + // 1. bit proc requires LLRs of 2. and 3. bit, 2.bits of 1. and 3. etc. + // Offsets are in units of bitOffsetInGroup (1*384/32) + const uint8_t lut_idxCnProcG3[3][2] = {{12,24}, {0,24}, {0,12}}; + + // ===================================================================== + // Process group with 3 BNs + + if (lut_numCnInCnGroups[0] > 0) + { + // Number of groups of 32 CNs for parallel processing + // Ceil for values not divisible by 32 + M = (lut_numCnInCnGroups[0]*Z + 63)>>6; + + // Set the offset to each bit within a group in terms of 32 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[0]*NR_LDPC_ZMAX)>>6; + + // Set pointers to start of group 3 + p_cnProcBuf = (__m512i*) &cnProcBuf [lut_startAddrCnGroups[0]]; + p_cnProcBufRes = (__m512i*) &cnProcBufRes[lut_startAddrCnGroups[0]]; + + // Loop over every BN + for (j=0; j<3; j++) + { + // Set of results pointer to correct BN address + p_cnProcBufResBit = p_cnProcBufRes + (j*bitOffsetInGroup); + + // Loop over CNs + for (i=0; i 0) + { + // Number of groups of 32 CNs for parallel processing + // Ceil for values not divisible by 32 + M = (lut_numCnInCnGroups[1]*Z + 63)>>6; + + // Set the offset to each bit within a group in terms of 32 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[1]*NR_LDPC_ZMAX)>>6; + + // Set pointers to start of group 4 + p_cnProcBuf = (__m512i*) &cnProcBuf [lut_startAddrCnGroups[1]]; + p_cnProcBufRes = (__m512i*) &cnProcBufRes[lut_startAddrCnGroups[1]]; + + // Loop over every BN + for (j=0; j<4; j++) + { + // Set of results pointer to correct BN address + p_cnProcBufResBit = p_cnProcBufRes + (j*bitOffsetInGroup); + + // Loop over CNs + for (i=0; i 0) + { + // Number of groups of 32 CNs for parallel processing + // Ceil for values not divisible by 32 + M = (lut_numCnInCnGroups[2]*Z + 63)>>6; + + // Set the offset to each bit within a group in terms of 32 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[2]*NR_LDPC_ZMAX)>>6; + + // Set pointers to start of group 5 + p_cnProcBuf = (__m512i*) &cnProcBuf [lut_startAddrCnGroups[2]]; + p_cnProcBufRes = (__m512i*) &cnProcBufRes[lut_startAddrCnGroups[2]]; + + // Loop over every BN + for (j=0; j<5; j++) + { + // Set of results pointer to correct BN address + p_cnProcBufResBit = p_cnProcBufRes + (j*bitOffsetInGroup); + + // Loop over CNs + for (i=0; i 0) + { + // Number of groups of 32 CNs for parallel processing + // Ceil for values not divisible by 32 + M = (lut_numCnInCnGroups[3]*Z + 63)>>6; + + // Set the offset to each bit within a group in terms of 32 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[3]*NR_LDPC_ZMAX)>>6; + + // Set pointers to start of group 6 + p_cnProcBuf = (__m512i*) &cnProcBuf [lut_startAddrCnGroups[3]]; + p_cnProcBufRes = (__m512i*) &cnProcBufRes[lut_startAddrCnGroups[3]]; + + // Loop over every BN + for (j=0; j<6; j++) + { + // Set of results pointer to correct BN address + p_cnProcBufResBit = p_cnProcBufRes + (j*bitOffsetInGroup); + + // Loop over CNs + for (i=0; i 0) + { + // Number of groups of 32 CNs for parallel processing + // Ceil for values not divisible by 32 + M = (lut_numCnInCnGroups[4]*Z + 63)>>6; + + // Set the offset to each bit within a group in terms of 32 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[4]*NR_LDPC_ZMAX)>>6; + + // Set pointers to start of group 7 + p_cnProcBuf = (__m512i*) &cnProcBuf [lut_startAddrCnGroups[4]]; + p_cnProcBufRes = (__m512i*) &cnProcBufRes[lut_startAddrCnGroups[4]]; + + // Loop over every BN + for (j=0; j<7; j++) + { + // Set of results pointer to correct BN address + p_cnProcBufResBit = p_cnProcBufRes + (j*bitOffsetInGroup); + + // Loop over CNs + for (i=0; i 0) + { + // Number of groups of 32 CNs for parallel processing + // Ceil for values not divisible by 32 + M = (lut_numCnInCnGroups[5]*Z + 63)>>6; + + // Set the offset to each bit within a group in terms of 32 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[5]*NR_LDPC_ZMAX)>>6; + + // Set pointers to start of group 8 + p_cnProcBuf = (__m512i*) &cnProcBuf [lut_startAddrCnGroups[5]]; + p_cnProcBufRes = (__m512i*) &cnProcBufRes[lut_startAddrCnGroups[5]]; + + // Loop over every BN + for (j=0; j<8; j++) + { + // Set of results pointer to correct BN address + p_cnProcBufResBit = p_cnProcBufRes + (j*bitOffsetInGroup); + + // Loop over CNs + for (i=0; i 0) + { + // Number of groups of 32 CNs for parallel processing + // Ceil for values not divisible by 32 + M = (lut_numCnInCnGroups[6]*Z + 63)>>6; + + // Set the offset to each bit within a group in terms of 32 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[6]*NR_LDPC_ZMAX)>>6; + + // Set pointers to start of group 9 + p_cnProcBuf = (__m512i*) &cnProcBuf [lut_startAddrCnGroups[6]]; + p_cnProcBufRes = (__m512i*) &cnProcBufRes[lut_startAddrCnGroups[6]]; + + // Loop over every BN + for (j=0; j<9; j++) + { + // Set of results pointer to correct BN address + p_cnProcBufResBit = p_cnProcBufRes + (j*bitOffsetInGroup); + + // Loop over CNs + for (i=0; i 0) + { + // Number of groups of 32 CNs for parallel processing + // Ceil for values not divisible by 32 + M = (lut_numCnInCnGroups[7]*Z + 63)>>6; + + // Set the offset to each bit within a group in terms of 32 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[7]*NR_LDPC_ZMAX)>>6; + + // Set pointers to start of group 10 + p_cnProcBuf = (__m512i*) &cnProcBuf [lut_startAddrCnGroups[7]]; + p_cnProcBufRes = (__m512i*) &cnProcBufRes[lut_startAddrCnGroups[7]]; + + // Loop over every BN + for (j=0; j<10; j++) + { + // Set of results pointer to correct BN address + p_cnProcBufResBit = p_cnProcBufRes + (j*bitOffsetInGroup); + + // Loop over CNs + for (i=0; i 0) + { + // Number of groups of 32 CNs for parallel processing + // Ceil for values not divisible by 32 + M = (lut_numCnInCnGroups[8]*Z + 63)>>6; + + // Set the offset to each bit within a group in terms of 32 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[8]*NR_LDPC_ZMAX)>>6; + + // Set pointers to start of group 19 + p_cnProcBuf = (__m512i*) &cnProcBuf [lut_startAddrCnGroups[8]]; + p_cnProcBufRes = (__m512i*) &cnProcBufRes[lut_startAddrCnGroups[8]]; + + // Loop over every BN + for (j=0; j<19; j++) + { + // Set of results pointer to correct BN address + p_cnProcBufResBit = p_cnProcBufRes + (j*bitOffsetInGroup); + + // Loop over CNs + for (i=0; inumCnInCnGroups; @@ -379,7 +1226,7 @@ static inline void nrLDPC_cnProc_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_pr int8_t* cnProcBuf = p_procBuf->cnProcBuf; int8_t* cnProcBufRes = p_procBuf->cnProcBufRes; - + __m256i* p_cnProcBuf; __m256i* p_cnProcBufRes; @@ -436,7 +1283,7 @@ static inline void nrLDPC_cnProc_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_pr ymm0 = p_cnProcBuf[lut_idxCnProcG3[j][1] + i]; min = _mm256_min_epu8(min, _mm256_abs_epi8(ymm0)); sgn = _mm256_sign_epi8(sgn, ymm0); - + // Store result min = _mm256_min_epu8(min, *p_maxLLR); // 128 in epi8 is -127 @@ -865,7 +1712,7 @@ static inline void nrLDPC_cnProc_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_pr } } - +#endif /** \brief Performs parity check for BG1 on the CN processing buffer. Stops as soon as error is detected. \param p_lut Pointer to decoder LUTs @@ -879,7 +1726,7 @@ static inline uint32_t nrLDPC_cnProcPc_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf int8_t* cnProcBuf = p_procBuf->cnProcBuf; int8_t* cnProcBufRes = p_procBuf->cnProcBufRes; - + __m256i* p_cnProcBuf; __m256i* p_cnProcBufRes; @@ -1514,7 +2361,7 @@ static inline uint32_t nrLDPC_cnProcPc_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf int8_t* cnProcBuf = p_procBuf->cnProcBuf; int8_t* cnProcBufRes = p_procBuf->cnProcBufRes; - + __m256i* p_cnProcBuf; __m256i* p_cnProcBufRes; @@ -1935,3 +2782,6 @@ static inline uint32_t nrLDPC_cnProcPc_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf } #endif + + + diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c index 0cbd58a40a..953e1c8ccc 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c @@ -34,244 +34,284 @@ /*----------------------------------------------------------------------/ - / included files for -->AVX512 / + / cn processing files -->AVX512 / /----------------------------------------------------------------------*/ //BG1------------------------------------------------------------------- #ifdef __AVX512BW__ -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z384_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z352_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z320_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z288_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z256_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z240_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z224_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z208_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z192_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z176_13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z384_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z352_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z320_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z288_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z256_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z240_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z224_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z208_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z192_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z176_R13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z160_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z144_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z128_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z120_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z112_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z104_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z96_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z88_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z80_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z72_13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z160_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z144_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z128_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z120_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z112_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z104_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z96_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z88_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z80_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z72_R13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z64_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z60_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z56_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z52_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z48_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z44_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z40_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z36_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z32_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z30_13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z64_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z60_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z56_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z52_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z48_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z44_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z40_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z36_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z32_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z30_R13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z28_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z26_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z24_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z22_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z20_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z18_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z16_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z15_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z14_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z13_13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z28_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z26_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z24_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z22_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z20_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z18_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z16_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z15_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z14_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z13_R13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z12_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z11_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z10_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z9_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z8_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z7_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z6_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z5_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z4_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z3_13_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z2_13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z12_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z11_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z10_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z9_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z8_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z7_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z6_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z5_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z4_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z3_R13_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z2_R13_AVX512.c" //BG2------------------------------------------------------------------ -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z384_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z352_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z320_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z288_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z256_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z240_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z224_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z208_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z192_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z176_15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z384_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z352_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z320_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z288_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z256_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z240_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z224_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z208_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z192_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z176_R15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z160_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z144_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z128_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z120_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z112_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z104_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z96_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z88_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z80_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z72_15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z160_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z144_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z128_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z120_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z112_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z104_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z96_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z88_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z80_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z72_R15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z64_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z60_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z56_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z52_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z48_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z44_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z40_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z36_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z32_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z30_15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z64_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z60_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z56_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z52_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z48_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z44_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z40_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z36_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z32_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z30_R15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z28_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z26_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z24_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z22_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z20_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z18_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z16_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z15_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z14_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z13_15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z28_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z26_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z24_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z22_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z20_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z18_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z16_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z15_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z14_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z13_R15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z12_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z11_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z10_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z9_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z8_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z7_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z6_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z5_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z4_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z3_15_AVX512.c" -#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z2_15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z12_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z11_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z10_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z9_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z8_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z7_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z6_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z5_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z4_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z3_R15_AVX512.c" +#include "nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z2_R15_AVX512.c" #else /*----------------------------------------------------------------------/ - / included files for -->AVX2 / + / cn Processing files -->AVX2 / /----------------------------------------------------------------------*/ //BG1------------------------------------------------------------------ -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z384_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z352_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z320_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z288_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z256_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z240_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z224_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z208_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z192_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z176_13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z384_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z352_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z320_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z288_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z256_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z240_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z224_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z208_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z192_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z176_R13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z160_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z144_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z128_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z120_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z112_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z104_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z96_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z88_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z80_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z72_13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z160_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z144_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z128_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z120_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z112_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z104_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z96_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z88_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z80_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z72_R13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z64_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z60_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z56_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z52_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z48_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z44_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z40_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z36_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z32_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z30_13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z64_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z60_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z56_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z52_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z48_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z44_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z40_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z36_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z32_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z30_R13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z28_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z26_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z24_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z22_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z20_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z18_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z16_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z15_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z14_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z13_13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z28_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z26_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z24_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z22_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z20_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z18_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z16_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z15_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z14_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z13_R13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z12_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z11_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z10_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z9_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z8_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z7_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z6_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z5_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z4_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z3_13_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z2_13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z12_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z11_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z10_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z9_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z8_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z7_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z6_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z5_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z4_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z3_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z2_R13_AVX2.c" //BG2 -------------------------------------------------------------------- -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z384_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z352_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z320_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z288_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z256_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z240_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z224_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z208_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z192_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z176_15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z384_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z352_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z320_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z288_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z256_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z240_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z224_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z208_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z192_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z176_R15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z160_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z144_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z128_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z120_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z112_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z104_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z96_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z88_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z80_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z72_15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z160_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z144_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z128_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z120_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z112_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z104_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z96_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z88_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z80_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z72_R15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z64_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z60_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z56_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z52_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z48_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z44_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z40_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z36_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z32_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z30_15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z64_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z60_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z56_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z52_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z48_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z44_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z40_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z36_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z32_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z30_R15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z28_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z26_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z24_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z22_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z20_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z18_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z16_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z15_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z14_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z13_15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z28_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z26_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z24_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z22_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z20_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z18_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z16_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z15_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z14_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z13_R15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z12_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z11_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z10_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z9_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z8_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z7_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z6_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z5_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z4_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z3_15_AVX2.c" -#include "nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z2_15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z12_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z11_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z10_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z9_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z8_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z7_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z6_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z5_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z4_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z3_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z2_R15_AVX2.c" #endif +//Bn Processing files +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z384_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z256_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z192_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z128_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z96_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z64_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z48_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z32_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z24_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z16_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z12_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z8_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z6_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z4_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z3_R13_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z2_R13_AVX2.c" + +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z384_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z256_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z192_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z128_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z96_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z64_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z48_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z32_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z24_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z16_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z12_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z8_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z6_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z4_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z3_R15_AVX2.c" +#include "nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z2_R15_AVX2.c" + +///#include "nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z384_R13_AVX2.c" +//#include "nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z384_R15_AVX2.c" + + + #define NR_LDPC_ENABLE_PARITY_CHECK #define NR_LDPC_PROFILER_DETAIL @@ -385,18 +425,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 384: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z384_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z384_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z384_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z384_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 352: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z352_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z352_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z352_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z352_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -404,9 +444,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 320: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z320_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z320_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z320_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z320_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -414,9 +454,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 288: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z288_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z288_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z288_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z288_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -424,9 +464,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 256: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z256_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z256_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z256_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z256_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -434,9 +474,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 240: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z240_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z240_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z240_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z240_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -445,9 +485,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z224_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z224_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z224_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z224_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -455,9 +495,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 208: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z208_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z208_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z208_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z208_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -465,9 +505,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 192: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z192_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z192_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z192_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z192_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -475,9 +515,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 176: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z176_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z176_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z176_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z176_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -485,27 +525,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 160: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z176_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z176_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z176_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z176_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 144: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z144_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z144_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z144_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z144_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 128: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z128_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z128_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z128_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z128_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -513,9 +553,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 120: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z120_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z120_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z120_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z120_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -523,9 +563,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 112: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z112_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z112_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z112_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z112_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -534,27 +574,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 104: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z104_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z104_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z104_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z104_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 96: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z96_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z96_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z96_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z96_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 88: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z88_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z88_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z88_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z88_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -562,9 +602,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 80: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z80_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z80_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z80_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z80_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -572,9 +612,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 72: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z72_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z72_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z72_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z72_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -582,9 +622,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 64: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z64_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z64_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z64_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z64_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -592,27 +632,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 60: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z60_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z60_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z60_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z60_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 56: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z56_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z56_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z56_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z56_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 52: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z52_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z52_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z52_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z52_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -620,9 +660,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 48: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z48_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z48_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z48_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z48_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -630,18 +670,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 44: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z44_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z44_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z44_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z44_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 40: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z40_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z40_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z40_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z40_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -649,36 +689,36 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 36: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z36_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z36_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z36_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z36_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 32: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z32_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z32_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z32_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z32_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 30: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z30_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z30_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z30_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z30_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 28: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z28_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z28_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z28_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z28_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -686,9 +726,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 26: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z26_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z26_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z26_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z26_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -696,9 +736,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 24: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z24_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z24_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z24_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z24_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -706,27 +746,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 22: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z22_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z22_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z22_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z22_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 20: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z20_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z20_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z20_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z20_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 18: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z18_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z18_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z18_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z18_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -734,27 +774,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 16: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z16_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z16_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z16_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z16_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 15: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z15_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z15_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z15_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z15_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 14: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z14_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z14_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z14_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z14_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -762,9 +802,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 13: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z13_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z13_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z13_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z13_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -772,9 +812,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 12: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z12_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z12_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z12_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z12_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -782,18 +822,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 11: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z11_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z11_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z11_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z11_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 10: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z10_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z10_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z10_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z10_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -801,9 +841,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 9: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z9_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z9_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z9_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z9_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -811,9 +851,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 8: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z8_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z8_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z8_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z8_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -821,9 +861,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 7: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z7_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z7_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z7_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z7_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -831,9 +871,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 6: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z6_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z6_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z6_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z6_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -841,9 +881,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 5: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z5_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z5_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z5_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z5_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -851,9 +891,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 4: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z4_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z4_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z4_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z4_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -861,18 +901,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 3: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z3_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z3_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z3_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z3_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 2: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z2_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z2_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z2_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z2_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -885,18 +925,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 384: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z384_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z384_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z384_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z384_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 352: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z352_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z352_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z352_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z352_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -904,9 +944,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 320: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z320_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z320_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z320_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z320_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -914,9 +954,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 288: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z288_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z288_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z288_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z288_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -924,9 +964,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 256: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z256_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z256_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z256_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z256_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -934,9 +974,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 240: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z240_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z240_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z240_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z240_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -945,9 +985,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z224_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z224_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z224_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z224_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -955,9 +995,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 208: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z208_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z208_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z208_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z208_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -965,9 +1005,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 192: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z192_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z192_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z192_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z192_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -975,9 +1015,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 176: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z176_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z176_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z176_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z176_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -985,27 +1025,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 160: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z176_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z176_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z176_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z176_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 144: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z144_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z144_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z144_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z144_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 128: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z128_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z128_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z128_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z128_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1013,9 +1053,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 120: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z120_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z120_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z120_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z120_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1023,9 +1063,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 112: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z112_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z112_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z112_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z112_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1034,27 +1074,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 104: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z104_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z104_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z104_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z104_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 96: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z96_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z96_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z96_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z96_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 88: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z88_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z88_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z88_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z88_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1062,9 +1102,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 80: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z80_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z80_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z80_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z80_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1072,9 +1112,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 72: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z72_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z72_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z72_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z72_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1082,9 +1122,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 64: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z64_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z64_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z64_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z64_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1092,27 +1132,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 60: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z60_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z60_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z60_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z60_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 56: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z56_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z56_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z56_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z56_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 52: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z52_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z52_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z52_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z52_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1120,9 +1160,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 48: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z48_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z48_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z48_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z48_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1130,18 +1170,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 44: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z44_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z44_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z44_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z44_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 40: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z40_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z40_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z40_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z40_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1149,36 +1189,36 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 36: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z36_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z36_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z36_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z36_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 32: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z32_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z32_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z32_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z32_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 30: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z30_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z30_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z30_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z30_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 28: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z28_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z28_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z28_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z28_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1186,9 +1226,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 26: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z26_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z26_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z26_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z26_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1196,9 +1236,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 24: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z24_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z24_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z24_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z24_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1206,27 +1246,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 22: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z22_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z22_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z22_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z22_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 20: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z20_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z20_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z20_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z20_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 18: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z18_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z18_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z18_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z18_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1234,27 +1274,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 16: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z16_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z16_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z16_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z16_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 15: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z15_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z15_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z15_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z15_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 14: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z14_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z14_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z14_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z14_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1262,9 +1302,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 13: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z13_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z13_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z13_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z13_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1272,9 +1312,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 12: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z12_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z12_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z12_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z12_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1282,18 +1322,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 11: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z11_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z11_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z11_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z11_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 10: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z10_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z10_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z10_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z10_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1301,9 +1341,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 9: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z9_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z9_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z9_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z9_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1311,9 +1351,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 8: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z8_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z8_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z8_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z8_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1321,9 +1361,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 7: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z7_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z7_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z7_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z7_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1331,9 +1371,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 6: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z6_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z6_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z6_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z6_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1341,9 +1381,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 5: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z5_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z5_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z5_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z5_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1351,9 +1391,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 4: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z4_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z4_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z4_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z4_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1361,18 +1401,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 3: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z3_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z3_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z3_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z3_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 2: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z2_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z2_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z2_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z2_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1411,7 +1451,120 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP #ifdef NR_LDPC_PROFILER_DETAIL start_meas(&p_profiler->bnProcPc); #endif - nrLDPC_bnProcPc(p_lut, p_procBuf, Z); + if(BG==1){ + + switch (Z) + { + case 384: + { + nrLDPC_bnProcPc_BG1_Z384_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + case 256: + { + nrLDPC_bnProcPc_BG1_Z256_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 192: + { + nrLDPC_bnProcPc_BG1_Z192_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 128: + { + nrLDPC_bnProcPc_BG1_Z128_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 96: + { + nrLDPC_bnProcPc_BG1_Z96_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 64: + { + nrLDPC_bnProcPc_BG1_Z64_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + case 48: + { + nrLDPC_bnProcPc_BG1_Z48_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + case 32: + { + nrLDPC_bnProcPc_BG1_Z32_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + default : + { + nrLDPC_bnProcPc(p_lut, p_procBuf, Z); + break; + } + + } + } + else{ + switch (Z) + { + case 384: + { + nrLDPC_bnProcPc_BG2_Z384_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + case 256: + { + nrLDPC_bnProcPc_BG2_Z256_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 192: + { + nrLDPC_bnProcPc_BG2_Z192_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 128: + { + nrLDPC_bnProcPc_BG2_Z128_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 96: + { + nrLDPC_bnProcPc_BG2_Z96_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 64: + { + nrLDPC_bnProcPc_BG2_Z64_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 48: + { + nrLDPC_bnProcPc_BG2_Z48_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 32: + { + nrLDPC_bnProcPc_BG2_Z32_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + default : + { + nrLDPC_bnProcPc(p_lut, p_procBuf, Z); + break; + } + + } + } + #ifdef NR_LDPC_PROFILER_DETAIL stop_meas(&p_profiler->bnProcPc); #endif @@ -1476,18 +1629,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 384: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z384_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z384_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z384_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z384_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 352: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z352_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z352_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z352_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z352_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1495,9 +1648,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 320: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z320_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z320_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z320_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z320_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1505,9 +1658,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 288: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z288_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z288_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z288_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z288_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1515,9 +1668,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 256: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z256_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z256_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z256_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z256_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1525,9 +1678,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 240: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z240_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z240_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z240_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z240_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1536,9 +1689,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z224_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z224_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z224_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z224_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1546,9 +1699,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 208: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z208_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z208_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z208_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z208_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1556,9 +1709,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 192: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z192_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z192_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z192_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z192_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1566,9 +1719,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 176: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z176_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z176_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z176_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z176_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1576,27 +1729,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 160: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z176_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z176_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z176_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z176_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 144: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z144_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z144_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z144_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z144_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 128: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z128_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z128_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z128_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z128_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1604,9 +1757,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 120: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z120_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z120_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z120_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z120_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1614,9 +1767,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 112: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z112_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z112_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z112_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z112_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1625,27 +1778,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 104: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z104_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z104_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z104_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z104_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 96: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z96_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z96_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z96_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z96_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 88: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z88_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z88_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z88_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z88_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1653,9 +1806,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 80: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z80_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z80_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z80_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z80_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1663,9 +1816,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 72: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z72_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z72_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z72_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z72_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1673,9 +1826,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 64: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z64_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z64_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z64_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z64_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1683,27 +1836,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 60: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z60_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z60_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z60_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z60_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 56: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z56_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z56_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z56_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z56_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 52: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z52_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z52_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z52_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z52_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1711,9 +1864,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 48: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z48_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z48_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z48_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z48_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1721,18 +1874,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 44: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z44_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z44_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z44_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z44_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 40: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z40_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z40_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z40_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z40_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1740,36 +1893,36 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 36: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z36_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z36_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z36_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z36_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 32: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z32_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z32_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z32_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z32_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 30: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z30_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z30_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z30_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z30_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 28: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z28_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z28_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z28_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z28_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1777,9 +1930,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 26: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z26_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z26_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z26_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z26_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1787,9 +1940,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 24: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z24_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z24_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z24_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z24_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1797,27 +1950,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 22: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z22_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z22_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z22_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z22_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 20: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z20_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z20_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z20_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z20_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 18: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z18_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z18_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z18_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z18_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1825,27 +1978,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 16: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z16_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z16_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z16_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z16_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 15: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z15_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z15_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z15_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z15_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 14: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z14_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z14_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z14_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z14_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1853,9 +2006,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 13: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z13_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z13_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z13_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z13_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1863,9 +2016,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 12: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z12_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z12_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z12_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z12_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1873,18 +2026,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 11: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z11_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z11_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z11_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z11_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 10: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z10_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z10_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z10_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z10_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1892,9 +2045,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 9: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z9_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z9_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z9_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z9_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1902,9 +2055,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 8: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z8_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z8_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z8_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z8_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1912,9 +2065,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 7: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z7_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z7_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z7_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z7_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1922,9 +2075,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 6: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z6_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z6_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z6_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z6_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1932,9 +2085,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 5: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z5_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z5_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z5_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z5_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1942,9 +2095,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 4: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z4_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z4_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z4_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z4_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1952,18 +2105,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 3: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z3_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z3_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z3_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z3_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 2: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z2_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z2_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z2_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z2_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1976,18 +2129,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 384: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z384_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z384_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z384_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z384_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 352: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z352_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z352_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z352_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z352_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -1995,9 +2148,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 320: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z320_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z320_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z320_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z320_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2005,9 +2158,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 288: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z288_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z288_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z288_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z288_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2015,9 +2168,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 256: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z256_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z256_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z256_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z256_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2025,9 +2178,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 240: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z240_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z240_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z240_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z240_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2036,9 +2189,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z224_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z224_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z224_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z224_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2046,9 +2199,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 208: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z208_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z208_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z208_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z208_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2056,9 +2209,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 192: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z192_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z192_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z192_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z192_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2066,9 +2219,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 176: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z176_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z176_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z176_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z176_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2076,27 +2229,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 160: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z176_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z176_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z176_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z176_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 144: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z144_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z144_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z144_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z144_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 128: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z128_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z128_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z128_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z128_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2104,9 +2257,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 120: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z120_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z120_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z120_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z120_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2114,9 +2267,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 112: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z112_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z112_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z112_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z112_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2125,27 +2278,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 104: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z104_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z104_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z104_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z104_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 96: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z96_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z96_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z96_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z96_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 88: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z88_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z88_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z88_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z88_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2153,9 +2306,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 80: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z80_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z80_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z80_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z80_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2163,9 +2316,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 72: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z72_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z72_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z72_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z72_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2173,9 +2326,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 64: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z64_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z64_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z64_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z64_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2183,27 +2336,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 60: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z60_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z60_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z60_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z60_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 56: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z56_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z56_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z56_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z56_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 52: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z52_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z52_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z52_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z52_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2211,9 +2364,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 48: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z48_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z48_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z48_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z48_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2221,18 +2374,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 44: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z44_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z44_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z44_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z44_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 40: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z40_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z40_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z40_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z40_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2240,36 +2393,36 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 36: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z36_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z36_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z36_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z36_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 32: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z32_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z32_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z32_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z32_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 30: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z30_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z30_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z30_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z30_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 28: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z28_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z28_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z28_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z28_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2277,9 +2430,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 26: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z26_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z26_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z26_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z26_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2287,9 +2440,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 24: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z24_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z24_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z24_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z24_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2297,27 +2450,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 22: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z22_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z22_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z22_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z22_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 20: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z20_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z20_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z20_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z20_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 18: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z18_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z18_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z18_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z18_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2325,27 +2478,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 16: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z16_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z16_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z16_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z16_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 15: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z15_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z15_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z15_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z15_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 14: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z14_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z14_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z14_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z14_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2353,9 +2506,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 13: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z13_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z13_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z13_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z13_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2363,9 +2516,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 12: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z12_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z12_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z12_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z12_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2373,18 +2526,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 11: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z11_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z11_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z11_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z11_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 10: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z10_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z10_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z10_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z10_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2392,9 +2545,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 9: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z9_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z9_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z9_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z9_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2402,9 +2555,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 8: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z8_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z8_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z8_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z8_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2412,9 +2565,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 7: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z7_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z7_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z7_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z7_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2422,9 +2575,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 6: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z6_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z6_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z6_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z6_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2432,9 +2585,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 5: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z5_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z5_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z5_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z5_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2442,9 +2595,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 4: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z4_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z4_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z4_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z4_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2452,18 +2605,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 3: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z3_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z3_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z3_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z3_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 2: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z2_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z2_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z2_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z2_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2501,7 +2654,120 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP #ifdef NR_LDPC_PROFILER_DETAIL start_meas(&p_profiler->bnProcPc); #endif - nrLDPC_bnProcPc(p_lut, p_procBuf, Z); + if(BG==1){ + + switch (Z) + { + case 384: + { + nrLDPC_bnProcPc_BG1_Z384_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + case 256: + { + nrLDPC_bnProcPc_BG1_Z256_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 192: + { + nrLDPC_bnProcPc_BG1_Z192_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 128: + { + nrLDPC_bnProcPc_BG1_Z128_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 96: + { + nrLDPC_bnProcPc_BG1_Z96_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 64: + { + nrLDPC_bnProcPc_BG1_Z64_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + case 48: + { + nrLDPC_bnProcPc_BG1_Z48_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + case 32: + { + nrLDPC_bnProcPc_BG1_Z32_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + default : + { + nrLDPC_bnProcPc(p_lut, p_procBuf, Z); + break; + } + + } + } + else{ + switch (Z) + { + case 384: + { + nrLDPC_bnProcPc_BG2_Z384_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + case 256: + { + nrLDPC_bnProcPc_BG2_Z256_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 192: + { + nrLDPC_bnProcPc_BG2_Z192_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 128: + { + nrLDPC_bnProcPc_BG2_Z128_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 96: + { + nrLDPC_bnProcPc_BG2_Z96_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 64: + { + nrLDPC_bnProcPc_BG2_Z64_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 48: + { + nrLDPC_bnProcPc_BG2_Z48_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 32: + { + nrLDPC_bnProcPc_BG2_Z32_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + default : + { + nrLDPC_bnProcPc(p_lut, p_procBuf, Z); + break; + } + + } + } + #ifdef NR_LDPC_PROFILER_DETAIL stop_meas(&p_profiler->bnProcPc); #endif @@ -2578,18 +2844,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 384: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z384_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z384_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z384_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z384_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 352: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z352_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z352_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z352_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z352_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2597,9 +2863,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 320: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z320_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z320_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z320_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z320_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2607,9 +2873,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 288: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z288_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z288_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z288_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z288_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2617,9 +2883,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 256: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z256_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z256_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z256_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z256_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2627,9 +2893,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 240: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z240_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z240_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z240_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z240_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2638,9 +2904,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z224_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z224_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z224_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z224_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2648,9 +2914,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 208: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z208_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z208_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z208_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z208_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2658,9 +2924,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 192: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z192_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z192_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z192_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z192_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2668,9 +2934,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 176: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z176_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z176_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z176_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z176_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2678,27 +2944,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 160: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z176_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z176_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z176_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z176_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 144: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z144_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z144_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z144_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z144_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 128: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z128_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z128_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z128_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z128_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2706,9 +2972,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 120: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z120_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z120_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z120_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z120_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2716,9 +2982,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 112: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z112_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z112_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z112_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z112_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2727,27 +2993,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 104: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z104_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z104_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z104_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z104_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 96: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z96_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z96_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z96_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z96_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 88: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z88_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z88_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z88_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z88_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2755,9 +3021,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 80: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z80_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z80_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z80_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z80_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2765,9 +3031,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 72: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z72_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z72_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z72_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z72_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2775,9 +3041,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 64: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z64_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z64_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z64_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z64_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2785,27 +3051,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 60: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z60_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z60_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z60_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z60_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 56: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z56_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z56_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z56_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z56_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 52: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z52_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z52_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z52_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z52_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2813,9 +3079,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 48: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z48_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z48_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z48_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z48_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2823,18 +3089,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 44: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z44_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z44_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z44_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z44_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 40: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z40_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z40_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z40_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z40_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2842,36 +3108,36 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 36: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z36_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z36_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z36_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z36_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 32: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z32_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z32_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z32_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z32_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 30: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z30_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z30_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z30_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z30_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 28: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z28_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z28_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z28_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z28_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2879,9 +3145,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 26: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z26_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z26_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z26_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z26_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2889,9 +3155,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 24: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z24_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z24_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z24_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z24_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2899,27 +3165,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 22: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z22_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z22_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z22_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z22_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 20: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z20_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z20_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z20_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z20_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 18: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z18_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z18_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z18_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z18_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2927,27 +3193,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 16: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z16_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z16_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z16_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z16_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 15: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z15_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z15_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z15_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z15_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 14: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z14_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z14_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z14_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z14_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2955,9 +3221,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 13: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z13_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z13_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z13_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z13_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2965,9 +3231,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 12: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z12_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z12_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z12_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z12_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2975,18 +3241,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 11: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z11_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z11_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z11_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z11_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 10: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z10_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z10_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z10_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z10_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -2994,9 +3260,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 9: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z9_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z9_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z9_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z9_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3004,9 +3270,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 8: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z8_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z8_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z8_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z8_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3014,9 +3280,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 7: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z7_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z7_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z7_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z7_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3024,9 +3290,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 6: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z6_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z6_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z6_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z6_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3034,9 +3300,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 5: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z5_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z5_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z5_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z5_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3044,9 +3310,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 4: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z4_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z4_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z4_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z4_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3054,18 +3320,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 3: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z3_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z3_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z3_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z3_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 2: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG1_Z2_13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z2_R13_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG1_Z2_13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG1_Z2_R13_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3078,18 +3344,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 384: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z384_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z384_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z384_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z384_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 352: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z352_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z352_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z352_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z352_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3097,9 +3363,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 320: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z320_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z320_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z320_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z320_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3107,9 +3373,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 288: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z288_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z288_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z288_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z288_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3117,9 +3383,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 256: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z256_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z256_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z256_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z256_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3127,9 +3393,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 240: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z240_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z240_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z240_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z240_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3138,9 +3404,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z224_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z224_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z224_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z224_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3148,9 +3414,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 208: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z208_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z208_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z208_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z208_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3158,9 +3424,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 192: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z192_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z192_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z192_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z192_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3168,9 +3434,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 176: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z176_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z176_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z176_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z176_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3178,27 +3444,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 160: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z176_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z176_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z176_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z176_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 144: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z144_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z144_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z144_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z144_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 128: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z128_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z128_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z128_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z128_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3206,9 +3472,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 120: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z120_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z120_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z120_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z120_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3216,9 +3482,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 112: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z112_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z112_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z112_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z112_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3227,27 +3493,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 104: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z104_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z104_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z104_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z104_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 96: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z96_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z96_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z96_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z96_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 88: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z88_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z88_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z88_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z88_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3255,9 +3521,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 80: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z80_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z80_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z80_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z80_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3265,9 +3531,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 72: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z72_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z72_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z72_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z72_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3275,9 +3541,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 64: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z64_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z64_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z64_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z64_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3285,27 +3551,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 60: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z60_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z60_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z60_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z60_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 56: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z56_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z56_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z56_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z56_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 52: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z52_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z52_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z52_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z52_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3313,9 +3579,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 48: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z48_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z48_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z48_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z48_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3323,18 +3589,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 44: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z44_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z44_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z44_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z44_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 40: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z40_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z40_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z40_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z40_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3342,36 +3608,36 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 36: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z36_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z36_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z36_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z36_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 32: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z32_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z32_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z32_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z32_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 30: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z30_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z30_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z30_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z30_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 28: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z28_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z28_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z28_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z28_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3379,9 +3645,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 26: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z26_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z26_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z26_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z26_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3389,9 +3655,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 24: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z24_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z24_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z24_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z24_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3399,27 +3665,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 22: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z22_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z22_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z22_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z22_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 20: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z20_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z20_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z20_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z20_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 18: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z18_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z18_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z18_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z18_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3427,27 +3693,27 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 16: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z16_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z16_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z16_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z16_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 15: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z15_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z15_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z15_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z15_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 14: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z14_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z14_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z14_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z14_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3455,9 +3721,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 13: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z13_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z13_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z13_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z13_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3465,9 +3731,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 12: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z12_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z12_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z12_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z12_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3475,18 +3741,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 11: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z11_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z11_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z11_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z11_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 10: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z10_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z10_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z10_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z10_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3494,9 +3760,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 9: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z9_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z9_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z9_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z9_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3504,9 +3770,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 8: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z8_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z8_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z8_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z8_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3514,9 +3780,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 7: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z7_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z7_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z7_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z7_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3524,9 +3790,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 6: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z6_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z6_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z6_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z6_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3534,9 +3800,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 5: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z5_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z5_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z5_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z5_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3544,9 +3810,9 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 4: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z4_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z4_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z4_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z4_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3554,18 +3820,18 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP case 3: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z3_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z3_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z3_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z3_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } case 2: { #ifdef __AVX512BW__ - nrLDPC_cnProc_BG2_Z2_15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z2_R15_AVX512(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #else - nrLDPC_cnProc_BG2_Z2_15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); + nrLDPC_cnProc_BG2_Z2_R15_AVX2(p_procBuf->cnProcBuf,p_procBuf->cnProcBufRes); #endif break; } @@ -3619,7 +3885,122 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP #ifdef NR_LDPC_PROFILER_DETAIL start_meas(&p_profiler->bnProc); #endif - nrLDPC_bnProc(p_lut, p_procBuf, Z); + + if(BG==1){ + + switch (Z) + { + case 384: + { + nrLDPC_bnProcPc_BG1_Z384_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + case 256: + { + nrLDPC_bnProcPc_BG1_Z256_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 192: + { + nrLDPC_bnProcPc_BG1_Z192_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 128: + { + nrLDPC_bnProcPc_BG1_Z128_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 96: + { + nrLDPC_bnProcPc_BG1_Z96_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 64: + { + nrLDPC_bnProcPc_BG1_Z64_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + case 48: + { + nrLDPC_bnProcPc_BG1_Z48_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + case 32: + { + nrLDPC_bnProcPc_BG1_Z32_R13_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + default : + { + nrLDPC_bnProcPc(p_lut, p_procBuf, Z); + break; + } + + } + } + else{ + switch (Z) + { + case 384: + { + nrLDPC_bnProcPc_BG2_Z384_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + case 256: + { + nrLDPC_bnProcPc_BG2_Z256_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 192: + { + nrLDPC_bnProcPc_BG2_Z192_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 128: + { + nrLDPC_bnProcPc_BG2_Z128_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 96: + { + nrLDPC_bnProcPc_BG2_Z96_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 64: + { + nrLDPC_bnProcPc_BG2_Z64_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 48: + { + nrLDPC_bnProcPc_BG2_Z48_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + + case 32: + { + nrLDPC_bnProcPc_BG2_Z32_R15_AVX2(p_procBuf->bnProcBuf,p_procBuf->bnProcBufRes, p_procBuf->llrRes , p_procBuf->llrProcBuf ); + break; + } + default : + { + nrLDPC_bnProcPc(p_lut, p_procBuf, Z); + break; + } + + } + } + + #ifdef NR_LDPC_PROFILER_DETAIL stop_meas(&p_profiler->bnProc); #endif @@ -3708,3 +4089,4 @@ static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDP + diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c.full b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c.full new file mode 100644 index 0000000000..34bfdc2fb3 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c.full @@ -0,0 +1,534 @@ + +/* + * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The OpenAirInterface Software Alliance licenses this file to You under + * the OAI Public License, Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.openairinterface.org/?page_id=698 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *------------------------------------------------------------------------------- + * For more information about the OpenAirInterface (OAI) Software Alliance: + * contact@openairinterface.org + */ + +/*!\file nrLDPC_decoder.c + * \brief Defines the LDPC decoder + * \author Sebastian Wagner (TCL Communications) Email: + * \date 30-09-2019 + * \version 2.0 + * \note + * \warning + */ + + +#include +#include +#include "nrLDPCdecoder_defs.h" +#include "nrLDPC_types.h" +#include "nrLDPC_init.h" +#include "nrLDPC_mPass.h" +#include "nrLDPC_cnProc.h" +#include "nrLDPC_bnProc.h" + + +#define NR_LDPC_ENABLE_PARITY_CHECK +#define NR_LDPC_PROFILER_DETAIL + +#ifdef NR_LDPC_DEBUG_MODE +#include "nrLDPC_tools/nrLDPC_debug.h" +#endif + +static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDPC_procBuf* p_procBuf, uint32_t numLLR, t_nrLDPC_lut* p_lut, t_nrLDPC_dec_params* p_decParams, t_nrLDPC_time_stats* p_profiler); + +int32_t nrLDPC_decod(t_nrLDPC_dec_params* p_decParams, int8_t* p_llr, int8_t* p_out, t_nrLDPC_procBuf* p_procBuf, t_nrLDPC_time_stats* p_profiler) +{ + uint32_t numLLR; + uint32_t numIter = 0; + t_nrLDPC_lut lut; + t_nrLDPC_lut* p_lut = &lut; + + //printf("p_procBuf->cnProcBuf = %p\n", p_procBuf->cnProcBuf); + + // Initialize decoder core(s) with correct LUTs + numLLR = nrLDPC_init(p_decParams, p_lut); + + // Launch LDPC decoder core for one segment + numIter = nrLDPC_decoder_core(p_llr, p_out, p_procBuf, numLLR, p_lut, p_decParams, p_profiler); + + return numIter; +} + +/** + \brief Performs LDPC decoding of one code block + \param p_llr Input LLRs + \param p_out Output vector + \param numLLR Number of LLRs + \param p_lut Pointer to decoder LUTs + \param p_decParams LDPC decoder parameters + \param p_profiler LDPC profiler statistics +*/ +static inline uint32_t nrLDPC_decoder_core(int8_t* p_llr, int8_t* p_out, t_nrLDPC_procBuf* p_procBuf, uint32_t numLLR, t_nrLDPC_lut* p_lut, t_nrLDPC_dec_params* p_decParams, t_nrLDPC_time_stats* p_profiler) +{ + uint16_t Z = p_decParams->Z; + uint8_t BG = p_decParams->BG; + uint8_t numMaxIter = p_decParams->numMaxIter; + e_nrLDPC_outMode outMode = p_decParams->outMode; + + // Minimum number of iterations is 1 + // 0 iterations means hard-decision on input LLRs + uint32_t i = 1; + // Initialize with parity check fail != 0 + int32_t pcRes = 1; + int8_t* p_llrOut; + + if (outMode == nrLDPC_outMode_LLRINT8) + { + p_llrOut = p_out; + } + else + { + // Use LLR processing buffer as temporary output buffer + p_llrOut = p_procBuf->llrProcBuf; + // Clear llrProcBuf + memset(p_llrOut,0, NR_LDPC_MAX_NUM_LLR*sizeof(int8_t)); + } + + + // Initialization +#ifdef NR_LDPC_PROFILER_DETAIL + start_meas(&p_profiler->llr2llrProcBuf); +#endif + nrLDPC_llr2llrProcBuf(p_lut, p_llr, p_procBuf, Z, BG); +#ifdef NR_LDPC_PROFILER_DETAIL + stop_meas(&p_profiler->llr2llrProcBuf); +#endif + +#ifdef NR_LDPC_DEBUG_MODE + nrLDPC_debug_initBuffer2File(nrLDPC_buffers_LLR_PROC); + nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_LLR_PROC, p_procBuf); +#endif + +#ifdef NR_LDPC_PROFILER_DETAIL + start_meas(&p_profiler->llr2CnProcBuf); +#endif + if (BG == 1) + { + nrLDPC_llr2CnProcBuf_BG1(p_lut, p_llr, p_procBuf, Z); + } + else + { + nrLDPC_llr2CnProcBuf_BG2(p_lut, p_llr, p_procBuf, Z); + } +#ifdef NR_LDPC_PROFILER_DETAIL + stop_meas(&p_profiler->llr2CnProcBuf); +#endif + +#ifdef NR_LDPC_DEBUG_MODE + nrLDPC_debug_initBuffer2File(nrLDPC_buffers_CN_PROC); + nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_CN_PROC, p_procBuf); +#endif + + // First iteration + + // CN processing +#ifdef NR_LDPC_PROFILER_DETAIL + start_meas(&p_profiler->cnProc); +#endif + if (BG == 1) + { + #ifdef __AVX512BW__ + nrLDPC_cnProc_BG1_AVX512(p_lut, p_procBuf, Z); + #else + nrLDPC_cnProc_BG1(p_lut, p_procBuf, Z); + #endif + } + else + { + #ifdef __AVX512BW__ + nrLDPC_cnProc_BG2_AVX512(p_lut, p_procBuf, Z); + #else + nrLDPC_cnProc_BG2(p_lut, p_procBuf, Z); + #endif + } +#ifdef NR_LDPC_PROFILER_DETAIL + stop_meas(&p_profiler->cnProc); +#endif + +#ifdef NR_LDPC_DEBUG_MODE + nrLDPC_debug_initBuffer2File(nrLDPC_buffers_CN_PROC_RES); + nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_CN_PROC_RES, p_procBuf); +#endif + +#ifdef NR_LDPC_PROFILER_DETAIL + start_meas(&p_profiler->cn2bnProcBuf); +#endif + if (BG == 1) + { + nrLDPC_cn2bnProcBuf_BG1(p_lut, p_procBuf, Z); + } + else + { + nrLDPC_cn2bnProcBuf_BG2(p_lut, p_procBuf, Z); + } +#ifdef NR_LDPC_PROFILER_DETAIL + stop_meas(&p_profiler->cn2bnProcBuf); +#endif + +#ifdef NR_LDPC_DEBUG_MODE + nrLDPC_debug_initBuffer2File(nrLDPC_buffers_BN_PROC); + nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_BN_PROC, p_procBuf); +#endif + + // BN processing +#ifdef NR_LDPC_PROFILER_DETAIL + start_meas(&p_profiler->bnProcPc); +#endif + +nrLDPC_bnProcPc(p_lut, p_procBuf, Z); + + +#ifdef NR_LDPC_PROFILER_DETAIL + stop_meas(&p_profiler->bnProcPc); +#endif + +#ifdef NR_LDPC_DEBUG_MODE + nrLDPC_debug_initBuffer2File(nrLDPC_buffers_LLR_RES); + nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_LLR_RES, p_procBuf); +#endif + +#ifdef NR_LDPC_PROFILER_DETAIL + start_meas(&p_profiler->bnProc); +#endif + nrLDPC_bnProc(p_lut, p_procBuf, Z); + +#ifdef NR_LDPC_PROFILER_DETAIL + stop_meas(&p_profiler->bnProc); +#endif + +#ifdef NR_LDPC_DEBUG_MODE + nrLDPC_debug_initBuffer2File(nrLDPC_buffers_BN_PROC_RES); + nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_BN_PROC_RES, p_procBuf); +#endif + + // BN results to CN processing buffer +#ifdef NR_LDPC_PROFILER_DETAIL + start_meas(&p_profiler->bn2cnProcBuf); +#endif + if (BG == 1) + { + nrLDPC_bn2cnProcBuf_BG1(p_lut, p_procBuf, Z); + } + else + { + nrLDPC_bn2cnProcBuf_BG2(p_lut, p_procBuf, Z); + } +#ifdef NR_LDPC_PROFILER_DETAIL + stop_meas(&p_profiler->bn2cnProcBuf); +#endif + +#ifdef NR_LDPC_DEBUG_MODE + nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_CN_PROC, p_procBuf); +#endif + + // Parity Check not necessary here since it will fail + // because first 2 cols/BNs in BG are punctured and cannot be + // estimated after only one iteration + + // First iteration finished + + while ( (i < (numMaxIter-1)) && (pcRes != 0) ) + { + // Increase iteration counter + i++; + + // CN processing +#ifdef NR_LDPC_PROFILER_DETAIL + start_meas(&p_profiler->cnProc); + +#endif + if (BG == 1) + { + #ifdef __AVX512BW__ + nrLDPC_cnProc_BG1_AVX512(p_lut, p_procBuf, Z); + #else + nrLDPC_cnProc_BG1(p_lut, p_procBuf, Z); + #endif + } + else + { + #ifdef __AVX512BW__ + nrLDPC_cnProc_BG2_AVX512(p_lut, p_procBuf, Z); + #else + nrLDPC_cnProc_BG2(p_lut, p_procBuf, Z); + #endif + } +#ifdef NR_LDPC_PROFILER_DETAIL + stop_meas(&p_profiler->cnProc); +#endif + +#ifdef NR_LDPC_DEBUG_MODE + nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_CN_PROC_RES, p_procBuf); +#endif + + // Send CN results back to BNs +#ifdef NR_LDPC_PROFILER_DETAIL + start_meas(&p_profiler->cn2bnProcBuf); +#endif + if (BG == 1) + { + nrLDPC_cn2bnProcBuf_BG1(p_lut, p_procBuf, Z); + } + else + { + nrLDPC_cn2bnProcBuf_BG2(p_lut, p_procBuf, Z); + } +#ifdef NR_LDPC_PROFILER_DETAIL + stop_meas(&p_profiler->cn2bnProcBuf); +#endif + +#ifdef NR_LDPC_DEBUG_MODE + nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_BN_PROC, p_procBuf); +#endif + + // BN Processing +#ifdef NR_LDPC_PROFILER_DETAIL + start_meas(&p_profiler->bnProcPc); +#endif + nrLDPC_bnProcPc(p_lut, p_procBuf, Z); + +#ifdef NR_LDPC_PROFILER_DETAIL + stop_meas(&p_profiler->bnProcPc); +#endif + +#ifdef NR_LDPC_DEBUG_MODE + nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_LLR_RES, p_procBuf); +#endif + +#ifdef NR_LDPC_PROFILER_DETAIL + start_meas(&p_profiler->bnProc); +#endif + nrLDPC_bnProc(p_lut, p_procBuf, Z); + +#ifdef NR_LDPC_PROFILER_DETAIL + stop_meas(&p_profiler->bnProc); +#endif + +#ifdef NR_LDPC_DEBUG_MODE + nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_BN_PROC_RES, p_procBuf); +#endif + + // BN results to CN processing buffer +#ifdef NR_LDPC_PROFILER_DETAIL + start_meas(&p_profiler->bn2cnProcBuf); +#endif + if (BG == 1) + { + nrLDPC_bn2cnProcBuf_BG1(p_lut, p_procBuf, Z); + } + else + { + nrLDPC_bn2cnProcBuf_BG2(p_lut, p_procBuf, Z); + } +#ifdef NR_LDPC_PROFILER_DETAIL + stop_meas(&p_profiler->bn2cnProcBuf); +#endif + +#ifdef NR_LDPC_DEBUG_MODE + nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_CN_PROC, p_procBuf); +#endif + + // Parity Check +#ifdef NR_LDPC_ENABLE_PARITY_CHECK +#ifdef NR_LDPC_PROFILER_DETAIL + start_meas(&p_profiler->cnProcPc); +#endif + if (BG == 1) + { + pcRes = nrLDPC_cnProcPc_BG1(p_lut, p_procBuf, Z); + } + else + { + pcRes = nrLDPC_cnProcPc_BG2(p_lut, p_procBuf, Z); + } +#ifdef NR_LDPC_PROFILER_DETAIL + stop_meas(&p_profiler->cnProcPc); +#endif +#endif + } + + // Last iteration + if ( (i < numMaxIter) && (pcRes != 0) ) + { + // Increase iteration counter + i++; + + // CN processing +#ifdef NR_LDPC_PROFILER_DETAIL + start_meas(&p_profiler->cnProc); +#endif + if (BG == 1) + { + #ifdef __AVX512BW__ + nrLDPC_cnProc_BG1_AVX512(p_lut, p_procBuf, Z); + #else + nrLDPC_cnProc_BG1(p_lut, p_procBuf, Z); + #endif + } + else + { + #ifdef __AVX512BW__ + nrLDPC_cnProc_BG2_AVX512(p_lut, p_procBuf, Z); + #else + nrLDPC_cnProc_BG2(p_lut, p_procBuf, Z); + #endif + } +#ifdef NR_LDPC_PROFILER_DETAIL + stop_meas(&p_profiler->cnProc); +#endif + +#ifdef NR_LDPC_DEBUG_MODE + nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_CN_PROC_RES, p_procBuf); +#endif + + // Send CN results back to BNs +#ifdef NR_LDPC_PROFILER_DETAIL + start_meas(&p_profiler->cn2bnProcBuf); +#endif + if (BG == 1) + { + nrLDPC_cn2bnProcBuf_BG1(p_lut, p_procBuf, Z); + } + else + { + nrLDPC_cn2bnProcBuf_BG2(p_lut, p_procBuf, Z); + } +#ifdef NR_LDPC_PROFILER_DETAIL + stop_meas(&p_profiler->cn2bnProcBuf); +#endif + +#ifdef NR_LDPC_DEBUG_MODE + nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_BN_PROC, p_procBuf); +#endif + + // BN Processing +#ifdef NR_LDPC_PROFILER_DETAIL + start_meas(&p_profiler->bnProcPc); +#endif + nrLDPC_bnProcPc(p_lut, p_procBuf, Z); + + + +#ifdef NR_LDPC_PROFILER_DETAIL + stop_meas(&p_profiler->bnProcPc); +#endif + +#ifdef NR_LDPC_DEBUG_MODE + nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_LLR_RES, p_procBuf); +#endif + + // If parity check not enabled, no need to send the BN proc results + // back to CNs +#ifdef NR_LDPC_ENABLE_PARITY_CHECK +#ifdef NR_LDPC_PROFILER_DETAIL + start_meas(&p_profiler->bnProc); +#endif + nrLDPC_bnProc(p_lut, p_procBuf, Z); + + +#ifdef NR_LDPC_PROFILER_DETAIL + stop_meas(&p_profiler->bnProc); +#endif + +#ifdef NR_LDPC_DEBUG_MODE + nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_BN_PROC_RES, p_procBuf); +#endif + + // BN results to CN processing buffer +#ifdef NR_LDPC_PROFILER_DETAIL + start_meas(&p_profiler->bn2cnProcBuf); +#endif + if (BG == 1) + { + nrLDPC_bn2cnProcBuf_BG1(p_lut, p_procBuf, Z); + } + else + { + nrLDPC_bn2cnProcBuf_BG2(p_lut, p_procBuf, Z); + } +#ifdef NR_LDPC_PROFILER_DETAIL + stop_meas(&p_profiler->bn2cnProcBuf); +#endif + +#ifdef NR_LDPC_DEBUG_MODE + nrLDPC_debug_writeBuffer2File(nrLDPC_buffers_CN_PROC, p_procBuf); +#endif + + // Parity Check +#ifdef NR_LDPC_PROFILER_DETAIL + start_meas(&p_profiler->cnProcPc); +#endif + if (BG == 1) + { + pcRes = nrLDPC_cnProcPc_BG1(p_lut, p_procBuf, Z); + } + else + { + pcRes = nrLDPC_cnProcPc_BG2(p_lut, p_procBuf, Z); + } +#ifdef NR_LDPC_PROFILER_DETAIL + stop_meas(&p_profiler->cnProcPc); +#endif +#endif + } + + // If maximum number of iterations reached an PC still fails increase number of iterations + // Thus, i > numMaxIter indicates that PC has failed + +#ifdef NR_LDPC_ENABLE_PARITY_CHECK + if (pcRes != 0) + { + i++; + } +#endif + + // Assign results from processing buffer to output +#ifdef NR_LDPC_PROFILER_DETAIL + start_meas(&p_profiler->llrRes2llrOut); +#endif + nrLDPC_llrRes2llrOut(p_lut, p_llrOut, p_procBuf, Z, BG); +#ifdef NR_LDPC_PROFILER_DETAIL + stop_meas(&p_profiler->llrRes2llrOut); +#endif + + // Hard-decision +#ifdef NR_LDPC_PROFILER_DETAIL + start_meas(&p_profiler->llr2bit); +#endif + if (outMode == nrLDPC_outMode_BIT) + { + nrLDPC_llr2bitPacked(p_out, p_llrOut, numLLR); + } + else if (outMode == nrLDPC_outMode_BITINT8) + { + nrLDPC_llr2bit(p_out, p_llrOut, numLLR); + } + +#ifdef NR_LDPC_PROFILER_DETAIL + stop_meas(&p_profiler->llr2bit); +#endif + + return i; +} + + + + diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_mPass.h b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_mPass.h index 8ebadd33f6..00841b2784 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_mPass.h +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_mPass.h @@ -29,7 +29,7 @@ #include #include "nrLDPCdecoder_defs.h" -#include +//#include /** \brief Circular memcpy1 |<- rem->|<- circular shift ->| @@ -1026,7 +1026,7 @@ static inline void nrLDPC_bn2cnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf // CN group with 3 BNs bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[0]*NR_LDPC_ZMAX; - + #pragma omp simd for (j=0;j<2; j++) { p_cnProcBuf = &cnProcBuf[lut_startAddrCnGroups[0] + j*bitOffsetInGroup]; @@ -1037,11 +1037,11 @@ static inline void nrLDPC_bn2cnProcBuf_BG1(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf // CN group with 4 BNs bitOffsetInGroup = lut_numCnInCnGroups_BG1_R13[1]*NR_LDPC_ZMAX; - + // #pragma omp simd for (j=0; j<3; j++) { p_cnProcBuf = &cnProcBuf[lut_startAddrCnGroups[1] + j*bitOffsetInGroup]; - + #pragma omp simd for (i=0; ij5wj9q9O+5dQrJvKCfQB_pNnypVOzO)9Ca6|MUD*_t{mus#evi zwN|ZNwW@aQw=P|FNKK)T<*p_>AoFf<_r)nHu32_N&)RhFWpTDJ>&10^wtLo{`??fo zifM~m_^%X;&i$S#HOnlm8^47$5wWmlaSG)AsEE#TKgUqt`butbF&O^0*F?_T&$7mp zZmhUAtdI1D^=GB{+&{gD$IV4Qhx1mrDMh#`MY!C5B8tm$KX0FH^LKo)yyI&YbLahH zy=+OkmVEQ-j``iDa}(U^DERo*2d4PkZx8NR;KZ|9*HFy3yjWj*ba|=RzT7X~X0z6< zJ$u2tS?kW7v2N}9&6mx%Y~g|#3+Bz-c;U>ssoj=u-b0T%A=Q-Av5`C5H;A7yVET+F zU#YwO;irG`tuO6+=WRo-dGf?R?sKcK`Hx`LZVWjGw2^ywJMk0RiQluG_TLCe8&<8)Hf-LsF+1z*3oqW3 ztv+Yng&S98t1rEH?IyfpwiPP`U9oY~Sr>0walu(@*JmqMthwOA^~IPK*`do0JLupQ zb7#(-IbZB+%Kq{@dE_7c$}G6eBi8mZ^|ZLnUb*nB6jC;O6yx-UZHRc|gwI`LS$uO> zBymbvd`S~!+3d1-n*t6-nx^3r=%bK?B*i^S`D~U~8zt;27vP=YDoqsV|UY)p!YyH^8guFk`OwT{_ zDsJNW-b=FQpGfy-doQV;-;wT5^GVxc8Fe`5V&xLEcM>=eMN$ zeY}?h&u>WgbG^6e&#z4P)4aFI&mY76oc}m%`}fam+WwoStX}W#-?pgZhHBQrtLce{x?PV zE&IQJ?Ks4;{|P|ux&lPb*jaZCQH8%eDt()_?muh|88(e+Mq$tiUu{IolmFEx&UpS! zfYgu8p5KUX8BJHdsIK4s%JzE~{_m@=uHL?FKfI>LmhM=5unk}O_`%^naR~m_ub3&j ztXBkTt{8RQHe*2ZFp^W9yPAmDHIPfBHQn5F-LkLmsK5WcspNMq-SW`M7PYR?R_j+E^WKd8oisKDi`x0=4Er4*Bf zHYeR{(y;bWA^Ss5kfRxu&shFrOP`s2Kyy;kYlV{v* zio4BtO?i{&H5YQSg-mR&@ZkqbNjI3(yDVuzGt}cI{bykHO8tG=)jR61{w%$a^1ZFU z?}_^RlVsH2{m9lGV;_E{Zu`=wzt|mklD0ol*im@m;b(fJ=%*fA`ZDp^^J{>=?u4gB z@u6&K8JQ1_dY-v1dw5sf_D8N;`f~k!S1+~6_4n;4JdyyWlmiSYBbUlM_`Z@XyY?+h zn%SImvq_C@RwGHswx~slVo3Wujf`RlhLfATq9gY?~_n zrHsIG0?!l(98chh8UiO0$V@spPdYVEIz3N1lRyIZ(UG9e&Xdl~lU5UWMsB^*v~@?J z*p+^PqAH7Or#lUzaqV}fcTq-jcRI98c3ycUapxK8>lR(=;piJnz*7b$5Llx8O(JlQ zfhh!%{7uXAOwaSo%=667^UNiX3Y?ecS&-*hnCICi&$AzaROtbEp2c~dgYrB}@;rwS zSdxoxO;LOwEs3vD?TD{~sP@Hob9>^u_g|aEw`bWC;r^??F4+*3ww?&x0;nx%om!Su zA+7yL%BA&DYTm3axwkf2?nDG_LKmea1#{^~b zH)b{PEP*6t&k?x6m|X=1c+?znk+=oEQ+>b!2qJcolJb*yT zJcvNbJcK~XJd8lfJc7UtxvH)$ivMp);%`(t;_n=#eer)!d*Z*(U%(+0XP=hZ`{8F4 z#aw+iQa}gl`!9b^#kAEShD8l2siH&t1E^w$czz4`w?w2&gXg#;6|SVTr^4S*hDSxu zxS=emqGxO-sn|1+)k|bc+bVonlwt2EQmZ2s{>wj=3aU`ywW-F`JL>AMIhz*cHI`KP zI(x^@C}ZcgTgfnN=eCdH&EC1~HnZ>Cc01n6o!dT!ciGNuAID>K{t3K0cW%1_k0JY= zcmRA74}iPy0Qh%206v8Wz^Cy5_zWHZcjHmfJ$L|o77u{W;Q{b@JOI9c2f)2}0NjTM z!2Nhs^hG=X9>4?OK|BDyga^Qv@c{S=9sm#F0q|8kD%ybuz{7X|Jc0+nqj&&(4G(~? z;{mV}4}iz;sOWJ#0KS0-z&G&#_!b@j-^K&rJ9q$m7Y~5%;Ze~OcmRAK4}d4}0QdnO z06)Y7;751>{1^{_pWxj9iyT#TEB4FZminbp?et4+3GMgG_qNwBZ~ITMh<@2n*)MCG zrqVANQ?0a9T65cDsxzaEwmRk3vZRVmc^*l5r@Xqv{ zBwQ*w=6{zZRdmd!Nh)^C?)BGP+mNKd>J0#N8$l~6dvG5;{kpQ9^l8~0lpj$@Z<1??c8=e9^fb7 z0e&JL;3we$eli~5r{Dp8Djwjc;Q@X+9^hx-fy9}3fUm#(gASw6yWFJ0e&tX z;H&TeUyTQN8jbGUb{=4vz%RoC{Bk_N--rkJoA55%x$Vt(fWHL~@GI~De=8o~TkrtC z5)bgJ@BrV62l&-^fN#SCiEHoxe;Xd)*Wv-b9S`ug;{kph9^mi51N@zMfM1UX_`C2x z;s!jx-;D?Ozu^IXBOc)I!2|rgc!0kT5Ad7t0KXXz@b}~GD5{~l)@sP8f2|rC`3Gc$)>&+Ir#+0Ix9n{>q zm8L&kmQ*sUZZ_#*lG;Rtk{-GtDhyuNXB!qci9N?<~P@xwZj|S&w%aTfZ;bfD((PlNd0kMs0PA)5})a9?W zthbaUl?eKTNoTj2)bkjU4sDG=X?nbv9L*&8#qT;INwc}J1yw#7Fl|xgyJblgRQY_H zHRV)kyQW2D#Z?gI+_Iz!!W`CSQXuM8Cio1&_{kZbYt%$kh?K1`mMqB64j+o*$8Kz`LyYgw4&T zzoti&Ma2`gRkuOkcF=8Zq>S8rx}#i19{6p@h!cyJPuQaQln3mssp#@?ehZPgB#LND zWIj-qR3S23NXj3uTd9B+`rIlaQTBjs#>3}pIV$mdZGp-kepBLVg-kV+p;94J{{>X> z`HBfuh1gmHCJFm?6kmpC#q+g=h@Dx6OofPTO*N)rJ|Qjb}AV$IBEJ! zM$EYclEHKyforwgFCeh8mOu;BXUe1LGvzrT&$F07G6Ee$AQiYI&vQtgrzy{Kc%Ek& zfmGm8c^=K!shs6`p5ya8Cla`}rYNr+nowJb@PH&|Pqee3R&GLVA;N!srdfo`ZHAao zC0oga+Cowu4xqM#_PMg83ZeZLNkyUkL#HOxV(qyJwMF#@mDN!psB6lSDg<>INku_z z(}bFYbaKEeq~+vj=Na+9uS&Al7y8H8uI5-|@0TPM^fkw^ye?)pl(`#$l({>Bm6qI-K+4>k zz!po^^qDgEBakvT5J;H^5ZEEqAOb0~rq7gF(`U*&fqPa%*pPb07;UqR^5gxX5{-Ime5sixe7+Cu#Q`xnjP-=PV$!D&*96|fc( zc~2D6R)_deSyDxZc#x!Ai*Et{q82YAQl`aQm{66JG81YGJf@UYR?#z#EK92B8FNW0 z_KbE-sHu1KiZbjSZJSVAsPGRwUFsbbDtre?#op1b33a-?<0dj9MNYl5mB{sHX@dsGku?P)`#`P`@OQ zpq?R+pngMOdfpRrqv^Ayu~f-u+NvjZJeGQ2dt<2!e%9O*D~zTwhDm*Z@zjQnd*Y-h zrmdcML|IZrPn=Cs-V?7X^~Bb8)8crFW%0C}pL@Bq+?3Bbj80BFSoU=tnyS}_5*1P=hMm{fEb9spV~0eB-G09r8tcrzXV zS}_5*0uKPKm>a^134m5i0ItFVKr1EyS}_68iV1*LOaQcE=F1r!+7Vmz%<7jjT0A3v z@MExO*N#|R&bY^J*Qc9C+m0BBIL|4^rHy$` zZCQmC9dk-qQmMZsqe5SjiXF4v<&4xZpZ!rKxjLHXToSnxVM@yx=i1*sKvMA`S+Sf^ z>X@6&crh7wZp)AhM5lm<=+xjLI<z>UYF+6j2TO~eCk5*~1q@qn9x z2i#OV;HKdLw+9|@)A3gB+%^LbxS4ps&B6n2HXd+u@PM0(2i%@`z|F%0ZayB>F2DnB zFFfED;sLie9&r2M0kET->WRCqQj3O zso3G^ewVfXB>v0y+ayanbH;6vJJF-!NqiSc#SYI>g-;S%o-&R?`Nib&-FEmZ$+&ad zt^dH>%*Fyd1m-rp32ZFDLvB8Xhnei-c!GHem@?ye-RJx2k-!Y z5D)M#;Q{_-Jixz#2NG`52K=jdfbYNq{9!!6AHf6sQ9QuEh6ni9@c`e62l!)nAn`aJ z;NQRl{F``ye+v)rZ{q>}9X!CliwF4k@Bn`T5Ag5ffy9$|fV+7d@E_s<{v$lVe~btC zPw)VL3J>s~;sO3MJivdB2NF-?0sad-z<-Gc_^z z{xTlm|AhzmU-1C{Z#=+X!2|sN;H@mGn;u1VQ?`x5sCLv1`oyGmOjG6CC|Zm=PWvv^ zhq@Wn(z^QaGj#ppHj0kB{?I6+E$y>kSyF}e8AnnZd3z{ZCm^ zg#bN6QZ7Jc_W2?vZ3s|4p_G>GO(>5jtFJan&=JLlF{iFC8`>nE_t! z8RYeIL%e=rnAiJ8c>UriuMdv#`sGHi54quU>5eI0ADQm;YqP!XoagoNgS4nm!(f{@%qafygqZQ*WcXZ_1PU>pL@dV zu4lZy@RHXTGt62`|ER5W=}U{f{&}U>m$wuiTl#m1oBd(IbxZ%=baVavOP1b%96e;* z_Q!U8>{l$fx0Nt2@#^nvfdBj4E54T2#=r4syq|X9Ne6C!^}rJk+y2)BPdIG*j}AP3 z**hohnmvwJ(B3&i|F~sSe>dmnO%MO0);IcgO?(_aZ~Ko;W9r9VZLQg|?Jq3b{?{dx z@#>(bo3=h$XxjS^n_uunzthe*@bm-EIPlB^S3G*d>X~`|zdVZa@ZG@HuL7p>I=d7c z1^$z63)*JO?)*Nazf<_7R}CvFa3*#md4C-FxAZDxwcYBv_vqQH_rOBk zfSz?VHHB`#X0>_10@P{Qm{C1;>(#AipPoJX^zO4;?;gE-_wCVhw?1{uB+?Uqi^?~ zy&8J;>DN%xty}l*Jt@3zU61Z{HMO+fFFvn1s*!_JtZsBV&|N1~CAf3w06EoZehI6s@hR1-5H$5!si*t7ZJo zVxsYwSkV3ce`*c?e?;MpatP*W;nm?J}-h?mUcQ4_c0lS4NxAZ2w zmfwXDS9V>rWpQ>8_#d(5=rCScknzkGUt>AS#Zse9xTgGPNwoJ*U zZP_E6v4y8NHTHr-gR^0kFbHXft}=h+{aZV69Tr|iVr6|@z3&9QPLt=%&*toz&D}FQ zY~8w5YtCBNxV&-VxybU&nVgNV;hYs~R;^#LdhNPZ8)uz$$z^kAt-pBLl4A~DanAZ< zF23-b6$c$Ucg3j_&s{NbV@e=FOTV{;M`_Y+Q5kg_}1tUb=SEd5wEE9(2@3yRojZ z!mU_w!QA-^);3;#!3DFYH-hx^#*J&%Prq>es*TexIP0=y%a-q(Kr6r+%|P7#jVms& zfE628ZJM)U)rPeTr%XBLyt6KzI%jIza8YIlaC7%ckmdEQzVPBksnfW2|JnPl-EZQ# z`>x$%|G9|}S$RIgwu92AOer>O+SF!pPCaenxqGZVqiwusba`vmu2~((__>wD{}ex7WvSuaDneAHS99hR%jiWm(${b~XU&to+W>+pM$; zk)7e!S$YiK7ViBT$8U4~9~r;3sO9zXTN?MhK7Mt8jt+q;8; z@^N3ABgi>L$d-e`q7I#%t;}x7c4RMQjfGxpkgr z3YENQD^EiOzuL~TxCKw!%d?@3@9pQgwOKYg%JW1`$WO<4vLs`j<(Z8fzBc#z{09s6 z>-Ou{?bol{uV1%ccQ)avNRQPFm&#aMO6nKIpTfrUO5xq`UA{9W)*JKub;Q(U8l(E8 z)Ipi6;={5bTqA#7Iz72(O6{9YZjSt8vVr88mX5SRYDgX3rA~A<$Gq~=P@L8Qwr)81f#hb<154eubT!EXOxoIQv-<9(JHTwfG z)6!wIqqEh7-;udQ^?ddnt{+M<%L>M{bU~Bmg*@76jK$=kmia61JXNg@(>Eup+cZ9_(E4|4Sewhvb^@6E3lCG|<+jv({2ew5IMzaGFTp}qL?6z1I$HS%2T z`EsnpYeVuQ;;I?Y*zy8Dq3ki<8zcX#fzP0o?JlHNdp3Gc%8{DVvUAsmcJ4+AV%(P+ zr9$^akLa_Vm7r!&PgK@bllAWmG^N*4`v7Wh;MxF8fAHvrZm1xa~J#{3DsJ<8omxtjg$XVfSy$3|Kw~a zbevi>|7WtW9{isG#Tp6E0Q0elCM>mg>Skp7Qr|STCCmehJ+iqhxc8#|G2k_>Q|OR< zwT5)>17zRC|K8m9>H`0jb@|_y=ci@)Y^MEy0Q4I8e{qrjhh}HATWcv{IMf;q^#{ZM zQ9zDHerpmxs^$M^q_scWQEK>_#>8g+52K7~^xs^@JB@6Q$@za^wuF(6{GZ8R=WZpN zUJj=2CNMt^{+~u04xsLp*-=&UzX{lu{C6u&wfsLVdsnsv+Aq)E*UbOZ;s4vZ#Q)nF ztG$CdbN;`LzIa>q{?419eLVI5UuK`pcCp20O?Fq}|3~TnUFH9jGXC!aKYF#;V$>cg zHAwE!MgA{O{GXrtfA#!-d*c5pxK+<+SN`9SZKR|t`0Ly~k@$Zx2L!z{do=O?^6WF& z+q=a7r{Mpc^uHVU)8+h+yN+=1;dUo3cm1|Gk9o=&bRiKa%w=1pbe-z<*)kXI1GBt0;~1BNXG=(lt$r zin-d(Q7B>>siiVYWptEMDnBo$SX|X!K35Xn(U-aZD?Kz|v zM;U>8-hz^!Lk9kq)ph(G^+zp%L12{61-dZ~D$Rmwx$`gbn-Vj(D4~|xoiXG%Tat5n zQyrPceB3q(XFf-mQF=aWNg!RiSe9ivcXSRQcFty;SJtH(qBzIH&giVqe5MA3DYi2( zG9?c=5(=wC)FGA;vUKqm&RL_iTB`ZG?i_8GL&nS}c-ht%K4{jn&GB8xggGLY*w{9m zEp~?06I|tXxV#2)B>m-$bgm(vvlH9t%tR?>(`Tw7 zcorNo#S(jx<{aMkNM%Pe;;ya7_@KD;$r1CLx4Johs1p_ENyLQ91X zi?V}m)@#VPt~&V^^(h5`i=6M3?xJT{rmd-k_x{Y)JxPwTV_s#?UT*&jJDM2VYI~Ng z)hcF>QSy~{sieG12ivBkM(x~o!6~!$tFXK&vG%%#8&6}NXfTfSwq;Y>?yX%S}oQ5U3ZoGUmKMDO6}OdFSKN-+~{RJQ<|~m z>0%#pP?Cj^4f&z8hyJ%6;X?n1r9IDCOsc}uZl<-TA6WE<27{qN13z_P1NZ7C>D-rm z1!5W!1+^LV0d5dAXy1JxB@tKM=UxxXbnb07_Ml4WvFTe0{msdKUV>FHl`| z11PH-SgRL9PILXQCe8K#0IU(Y{vS%X8?)?zv`GCw6nsPfH-L?$^rSp>a6RdRQ_J*) zA3|z9f8A+$AAbF?erRbNLd-DkyH5Y%&}}4isG$s3Eu_tEsr~|Gi|cNb-y_ACYasIk z>vqQMYau25Ka!jSNgKt?V|c=K2!0>#22jU9${5Afo;sXb>JvZhyXyZz)H94+zN*?) zXOFbq($L;$A5<3_R=X%YrpHq#*Z-y}DaJ;M+%q=DK9&(BhwhEuZY`Foy)yK#HCVQF zTTWMOKBd)Lp?%G5O6Y%~#b2$W9*z-)x=lP| z?BS>-*2T;dxsVlTM+JFC9{Xd)%3dnh`|A$fT2xM^t81x}N*Z(8HU0pJO zo}iXernONI1~2=wl~sw>z3lcDS$&>-}GBfekg9ZwD2x#s$R9Q>L>uHB)e`hOfX4@2wnqzu3Z050`ErZ zor5fl;W~p=+&*Z$(ElR{HIQm4x&EI@`e1DPb*wJT;y03Y=26)8r&7xx?gx>3PujHy z@r|^0W|G3LaUk^n9>CATb}an|QvRM$sgUiJ%?H=rs5|t(xzzu2!E0~U8Aj5M(Enq> zXm4`P0jGVCkG+twdB6?_`w?I_o|GP>sQ)Js%WHeYj-_RM8I`|5Y4zf@>3`=z_C80C zY7w81q5mCGsg?SXp3kGyhw583y&BcgKrKIYSg!w_YdI?IMoFgC6?3W09Ete+b)`g^ zuP3KvtN$<1k4v`p5B1=zr@OfZkB|^(X8TSUo!sO!^`(q5p@{l3vJ%qsi{1n-cne z5RfhPzkO9bC7zBlx^v%NAKL!ky z_EE$SqV`GT8A#vkfkcfYUHw0aoc7icKo6p|>i=O#T{qI~vuc8ol&Gyz{XdQrWysZw z9;w`}(tkds7m)Yese5`hN^}QX$6wdnJgj;_pkg`vX+I)-<2~#~Yl9r}MycMsuMP zxXV~C(H#Iy!&U1431B+`oF^31bFDs=)=s9j188AM|66-T9h0GvFCur%h5p|^Ju{C( z22SGJ?E68vS=lmt_5ablKHQz_0r1K3f9U^(q=f!I5~*H7UiJT6bjiVRu|7K-K9uYK z`CzR6m#;@BS(=HhzAyKVFAjmbJ&FHk^#AGbyj=gE#$D+DeW3c`a9aI;GF;B}|H^DJ z(scy9bH!5qe=-<`{$E7g8KfVUok`0kW#{l4$-bdc#GXOgpzKtBrz5$?qD{|bi>;N{~y{y{~rw<*F&+*Q0^pfSORx?ui^Nu)mg|;B-|YoCH?R7&e@o`#*pHwvQN7hPpIY88P*?V zb&dMIRzHltq4>G}9}lM+k(jCc)c=jtJ~in&TQHHlq5o$g&*SKKBj~4N$k7)*jRK;U z77PHd*ijPW|2>FN|2u1&LeCjP4{jj8VK+|GEA@02xyM&!Vgc(7}3K7Fo`y@8gi{}&;@uA?1;jEDX|lb)3!sSCg( z*Z*fB&4(k&Gm!ryk>$|;3z6n?k?Z+L_<_j!99pXWKa9|Rz9a+Vp=@QU7l(Yqt8osU7`)D)~bHUjqi=&cSOch8_Q}1KSBudtEUu*Z&tm=gHZ& zHue8zQm%Ln`u{vQyoS}n)!A9uzq1N?chdjovYz=dsP-m!ax`m->i_q_r}M!1^6Zps z3oEsu|4)Vkx&FTp=~4f$pv2o)58i;x1xf7A8tk2{>+j4i z$gT(L>$9!M*C=8`|38AXpPqdndm!omFVnWyrvD$HzurzC+r{1i_5WkpN3-7}pO+W) z|5xc*Z-ts$(^KLxc(oo}|ASTb?;-zR&b~tG58%D}|C6*y{eL&Bz@Gx+cc=0Ho!L+5 z17FHMN7?s+<#(t>{r>~{$rqCTe@7bsza@K5SIJNQ*7|=Ddcgxy9Fvsv|DME6rx(sa zSL{nl9sSu<_Y93j)~12OP$g>Up4&|qwzBcT>=6Z|IlZk=q^YpIOfJm*^hH|KCme|6AE7vU}*WyU|bQWZ&oa zVD@SBlKTHAw8y9Jok;T!v!5bCPtt4mp%<0w|7)Q2d)OCoEWPDoQr<*=9m5`p_t7uZ z{}-cuK1z*Ubxri3?*KHgAmj}R{Ok0yr?Q9A{vpTzUrDiEz5vEIq|>dd{RO!m zT3B9C|36C4{C*ly%+DqkE@Ed(uK#}sheQAODSVkjq#6nhg*&*WhIZki1|OQ9s3)S^ zSI{48;BZ^|$30E!(r92q(mzX)=9c*R$lGP;pF@-WIl4prb2%*-i!QzFU!;FN z0^L`m=O-bX19+~ee=cfA|GbBNZgEE3#iC`S~caatD3v4z%cX zJV$SYYJXv`-;2o4XOZhKk@9tDYwD+=?1y*`-<54b7u}oW=Tm5asf?h$hy1uZD{_4} zyE(hB?D=&$n&2Zzer^ZRD64afTjt20U%y0ag!~*_crLSdKEOe6t>x!;;P?$@WADk1 zF6>=Ue)cISKhJ~LTMNtR$u~m98uo;(EqoJNOf8HnoLVT!&%(mB*?@x2udFZ@ek?5X zE)33oOuoj#oustHuJbzq0w`97;x59GR*Em(8<)phM_xkf`pl&jApeVf2Ij9xKd-{; z=XoMEPs!6QrM1)IXHHi!^00P@d@a6~wAjNCHClr8=v+4y);z|TuhMl(5s_j(bGaJT zoser{Vd2mU7kdp-mJ}Ztxko{~qHV3$$1KNH#ArdZ#1%YUj%S3eFKs!43Ht`%Z$gB?*!PmebNjNjd+6I#EK< z*BX=%?@GC(e9%dV*ySOwT02)j<%+QRYN-1yg0CU1azWU@&T^t8X(+6eGo~&1kM%Iu z4_rSrw|hh6cBTBgifS(Zq=b74cHCrltIgP4{-skc|G{N@tUSv#V{7~^ zNzLJ21N)#W1InGgu&%zVH9`Ygs<}e`)fPg8{A-bIUH(AQl^!uOEHm`WE?5%NEZahdWzni4|(UB`~q3EvY6`Bw(>HRq83kjg&fXzi4L*S+?j zg<}}mY9a1P%#hR;ZSwA8@m&?ydVCw#6)G+6!=TeJ#$h8ULHqEScI1Bo7J!oc@4?*2 zHCpB0)gh%x>!|WSopE|D|JGs7nUue0N*M!=t@%5JRw@7cLPu@Eb^PX0&TME@!z^=m zaGXiAwRDV6F?A_C0Q*24vp8*xx%^Kcf2C6{VxOimsVs=GGO6T+{Hw)W=XI4-X>_NF zyO5O2e&oyLUrT$X^Q}zR|CCNOoDy13crbaDp^*Ou%2yj{5pb82`=VmEfe=cVYp{hj zI6N8N^rr@8b251y+mEDN*F}|owSw}mTX(hOoJjsr8~QvOV49m>D^148~?H?MT{lodUAPPQ0a zl>Y;Z@;{SVNiP30DPt~ov&dhP|G98DD^jIx`JV+Xh5&UEZF3Fk2g(r@_!P!R#1DTJD0h^BK~|s?nvl-AioXdTnC;Z|Hor7-4EU$ zN31b*Sc=sDv&gIbp8$RPF*EH={jKF+&7=G~iysbl!;-#I{@ukkgxLN_iSqBRwLV;x z(2;Oh`5#32?xRsp`D|9cS~{Ty(Mt=+iSj=#$z@6YM^Mu^tQI|~c?x+#{wI(tP|lqedvZSozK8tpN!~F?(;i9w_e-3f zn&f|K%fh)k7CB!C-+D6JJcjZYQp$S%x?{&x{+lS}Wd7EG=Q^-h3zrr_ofDZ2&jtD@ zY&zYLyq-we`EAJmNm!0U{x1jmbZYF2RZRVVEIr6|jB^rBmoVddBcYK0vr=3yVoLIV ze6b&-q~^=p;Qjg}|EDlxSN=B_TW}y)--Y$^gGv5x#FDQ4`%L^zP+R$b7m{`?mWzJG zEB_a?QA4Ht--x~bi_P-?7WjTEkau8FQ~tk-th^DqSwfy%{_ms4_mDD%IeTmQe;Nwj z&!3ixuOs^pFo)m39C{r#fHz`MzlHh!`PlV7l6{NV8e;0QpM&|^sq;YE_CD-$SJHy7 zVYz&&4f$82^?=9wA?bS~DGTB81n}=g-o2Cj&!O*y{JUdmZ)8dNUj$8Sp``CxD*uiA z?LiwVo$|i~`JaQ9Q2viaD(aEY(EkS@8G93VGW9k!%l{!@Fc(YMVCq^<`bkOt_od#p z<^L?~R*PAoIGUDTkKOpj?3$wdUj`*+U|ZRW6i&fTwI1{~QtCSiU4?Z~{r?W|dmAn8 zjSOF2i9Wd90&b5b`QMS`|6{-^|4<hm!n1&Z>v7PlLrzv9>Ov)}7cS=4KBU<^Mt8 z?}txsZdLy8v0c3%%P-@d!eZ<@A^$hwEC1SYOY+~lkjwv{u;ShTk9rrB|J#z?_t`e2 zGt2fWJOsAt|B(Ox!3y?lHm0y1>F8Owi&~cz{u}$J@_%aK{~-TI6gFW+swuooD;f*R z|3k?Cx0C!oLTxRbPpw>jE=MviOY*Z8h<%{QiAYt*PZRZDfYj#l^VTFko0{ckWs;vW zTNcjU5gDZ%^{Gn)QNQer|>n*CK%%u{VAKPS3^aHJDa?jvDVT z%FkKt$WMWfJuJ><6pqfu6=q`hyO9q_+zVCj&W06c6_lUxg7!d2PG!k3Vr z>Ckg>A>?N`9BS!4+f1LEuvBiyUV$DT!`gKiD+to(re^y56#BeK|F(a902}fw0Jun>@9-|?XS3zte0%mIRxYGZ?}GhnSmESC&q7n-4`4s8 zuo{copR*GRKgy0PTul0LAUeWBb7mBqKXw{h`{8FXC3T2KlL;$16Jv?!}|;~dD` zH7P2;%V+DBWs32UX10h)0G(WN3yyXKT{nKY%_>C@ADDV|CKI^iv5}|!tMeHO?8K&hfDr`h*DTIumvN896M|60OsgI*+WzIl~Of3$3+6 z>q%XT%`udQ+62Pc7RU2J&(7*_eD7{~cb&VdCM;<&&#)YSy4o~0ux0Lccl;mi?!0{W z&O2jqeh?Nm=OkK`!saGToYiQZ5d+@^(cY7{uJamlSyU2jwevBjB`9?Lz{yxXrmw0lhd|MidEy} zTQ2|Ft+XyF|4K+M|IQrczH@plmSQfSt8qOTUBtXJ?3~KKwu_KJ?N;Up+n6nKMj3DW zgj{u2hnBIhifR|}y&!j8DgW;C^=u)z?;A=vz57$Xt*K7_>ls5y(f+^;XPiEWJ2~O_ zrQA`VCSws9wkqwlo{0|}BH-+*!OJ_BN zWmc+7mFSgnS=*X6EuHtulyV?d%%$F|#@QF8cJwW2qr}GBvD(wa_NApvYorpUbX70^ zeV}tM+8pw)`k8xqQRSxpZ~%DgAxV#T}W$DOvfK$HOSuHe zYG{)G5!7eMop}974I5TxG#bv>S^0OKsQn}4e-!hP(EqvoyJOI|HX5mYFymU^wyMTy z85^G<>zRj61+yv8U?h}L{>MQD_f@)^M)|jf$+V~utg6F*Dlj4c?%p26m^S2JyToY5 zJ`Mb|C$^OTJ)x;qt=( z#0r2kuLJ)A6w+x6Q~uRB+RDt;HTn0fD)oVOqFnyn|38?LJylGJ_go(3-?whu^PlUZ zghIO)<=-;{wR%d4a{1RT=Q}Th@qJ@Y+lJ>LdHPgW1~Oj^ z`JV~~?r`1{37g5twjZh0$xliCXMo{=G=kS!Gb+iX@4u-3C&1~D|0UqDcas0b?b4(? zp_Z9ZF8@b@-9F5xX9K^WDF1sQze^ZFPex8Nc0`2yFJoR;9sareFJ+Edu~UTKNx~Sjy1BMg2dTwubyq z1KL#`cPP96c?R-7h0qvcXYtGB-}Bu@cTj36N%>z2x0X_JhV^G(G{P*TrWYLEkMI$2 zdw=|r{4c{EW_s&`9Bqk&S&PohvuNuY z__GJxuf{3=<{SYn%H{uDW{Z=d&6|?^ucOXWnY(Ams`7shbuO-^c(A*hGSus9kk6^i zu0NIJ|9UJY^~_NBLV`Y6A^)e*)}z=NRE>K#_C59gr;GCcP3|^O;;^1f--o_$rp%|2|L3rct)TW#F!NRZukW(_ z?@lQ`6{jQf)1XHq(muIa{u{ZM>*@#h)O#A>KJa8>mGYzfA4yxa-0lev7bf|4hg3=a zPf7B>0x8{>`UlY84~JSuRzrUBuOL zMfv|YvUE2Vp!3)pd@Xy6+^?+se-)0rkCUF1|LIwEBXNJoEK8_DfGd!;lf<(N_%0?yRD1z^E>eW9sTzh&KTaK zuzTTq@b;4}^r!OkQEdO8ha=0dInKj=Se^cS8q99RRwaGjoBG#Ebip0;ukR-M+*+j1 z9klR;GWz_Ex~g$Gef|V}jw?Kf{jDb3uP~q>eV)vYEL_OG_fy#Sw|n8Og}K>j1?h8k z!T!~^P)+$-EW$DqAz|{E9Ns5r*bB57#9f{{>;}d;chdT#1;9|auq`+X3;RIWsNx)g z$YDv21;ch_E^QoPF>;3EY}lVEuBMt>dwz@`U8(mC{`>?2MGTbVB6q zcOOb+`+Z~Gb24ndtHQR`)n?~rI`MS9*>?qf1JzNT?RTcGbMEgu{hm+~>%+Fuaesf4 zQ{Ld3bay7AeN1bkGqt?^TIrk@Xrt1`=6pBW>|PkHQnu4ss+I!VpO2n=JIpg?ZT~P* zJnh+i4yE?HV(6&MQ)6v^?7witpmUr(4XCj|JL(?Gcw!RIlf3=zY?w_<-hO*+%l6Me z6Ya$_BicVEYb3`EezW+AN9+m+y1VP4AJ}RgDYf6(v2WnHnp%LawS+upL>KLMzS$cr zqWvR@ot#o#ZJ)=TE33ADJf%C*cZbEelw$_C`A(eYrXNgb5~H6U3A()f`=D2ck>e!V ze-zsB@aFa(i&i_A=dSHP5MHdIq`jd)Q#1c<|HkI_pGy7v(f<8-he%gyzbBjw0keKQ zJv`~eF;(!t)c#qte>&}%*`odPz>u4w;NjE!vnzwvawl#$SKo&aws%Krms>~ncG4`UQ)`@hHY z=c9}*n~G~yHMI5LQ~R%BJ*a@ryqOWz$N81oKOJm58OAq&ZU4SdXV2#L&n71Le+X2Z zlipdK$(TF%e;jpQ&68^`_uUjYl_GxznWH`D zd@?kxSGBG?{oLQ7CXST$V2!sfEj#YEQhU3a;W<0*?yau<)@N?_fQ259)eZORc5b7N zr)qFb`p5HCdRDi>AY{I8G58mpR5O)E8Dwh51*PJ77SC$=@6*huME;a+2bgGAAEdX~ z`efHK;CMt@#IDEoVND7CYhQ~ojnM8c4gPm-qb=uu>>%^`>C@dEX`<@9!tO59;D7Agb0tV# zI7(svKu4&jw4DErjr_JroLr|BQmbd@{C7+f{P!Fr$0n{u^oNF?yc9aNBP4pJ(T>(~ zcOQ=c*8NhBgzW#F+kkvO#azC(zZ=k6w}byf(aN2}OM6Erz7IMV%FX6^DE}uRnUkyH zzvn#!|FvW_0yC29Jbqo_f1HCSCmmn)1J)A>qIYyeKcBts(p7VL#>yakE&KAXI{th9 zK{sF~@aqoNp6fC)!H=he&YY)^XbmYqx4}F;d%(Rt6aVK^s@D0AT}%ESz}R92CG3~@ zKY- zGR|7X=%+uU(9_}n>Cp3pPT@Tr%H5iy$n9FCa~b(Rnm;vBXU?&Hf26(u)#~AcZ$Rh# zAIDsvGdG8NSAx?^BcAHz}-{QoZe|3%{e_jpe@`2U?w;rBwz3`yhC8HxY% zn)&Ytx^w=Y$awR>BL5e`|I?Y>?4SC-Z^$Lu3n5*1?Md*`d{QoR7hMN-qzuzhRq(boj@WRAG zIsZo$*qK&1w$NDtdoe2r`d^TCEp95K|8dAwXYNESaY6qpX~ni8{VznStE2z8!dIZ% z%k0{d{$mQeX!*>-ZUyQ82dt@`x%(6T&N~ACm*JlJ<3mWn57=GUnHy4A&nK{Vp+62} z_7wR4Bb!wa|6jKwKc(45Yw|jJ4CgGObXUT|QB9QK6TWhW;SNv_@j!m9Jdr<5_(q5yrsHL+-zDF15#kKte&MjfKqOyE#Rk?kvt@cN1 zyy@fGKnPvN3dv>hVy8YV2`tk&DwYaVJ zJKu49nOpl>q7Zv89DQnobXL{UIYx1u?E6}_zp@4HgZI3}XuqdEwsbx%obfo?w*7Hm z$}=U6U*vzZzfyzRes={=Pjmh8ZM5HU%pPb_+dqzRV5KXyUwdTb2s=*Kb@XNX2e#Ax zv9x~-nzydi6M7uagKj)`ee0+OEXP$;zkqx9Z;#-~Yx}(~cgLf(hwv1eP5WI7T~eM% zcuBGSD|uS3!roNL|NVJ}4@Rfhe)h|@YJUURdHSFHcYYLBxKbsa$m2+Ua@NS-z*gy= z12va1hHs77{=-Y4DKw7Nyl&udIwkBw`@;%W%4B=B=bW9|e`2fle=4>A+G6|P-m3kd zqWxQ0H_6+-sZ?|d-Amo?%zlNH=iNNp-`}eJvy1JY1Q%w&r`GL1j!|Q@{}`SqmF;^Q z&xosN|Fu~1E?|6kOGW+B{-3fRJKFz^igerm_vZFL*Q))e7v%p!*0|*VKJ4;t={6+% zkHg|Mf%-3E%+=CuWZmWCMf~pp|GQcyvlCkUf6w^}>sdkhuU7a+`9Glik5T@gT9v0V2*abMDtK2!WNN1i*LGm)o+RVkEXW=u=xvnuQeK2P%}mrsbO zS4b^JT7aT_^ZC=6$DCnF(hnO|ZZEWCar8b`MFJ;F2-s*xK;>9ka_+Rg#m+;^vYhxu zz43hXnHlAmFtja>-F?#JRMO_9^)Z|{xJKbGcK=1Y%;WRd9gfDBBeztFb4#ZUOKX%) zIG<_x=)zd7Ubf4)7;i|seBPe#z7<+bBexj(bWoF8s(1OQ!4icIDJVVt0<+fmnb&=k zmJn|oTW(&a);Zf|JyOX(*Z!`O_L|yR=gItdn9|jDpf)<1Z*c zAl>PgJ6GnUvU_dig|SL(<3NNPt5;!0w(3tb@JEGIOAxon|7uOTa9V;;F+oPVKdq(lBQ zHuON`EA^h}qftw#{3tKyY-{|Kd}E^rL}_wCIQe5*oPY`N#_L%Bxqsh29Qw~*6yMfW zPn7FF-={6RapZm8% z|M?}~(0}ocfNu@!+)*9+&wKHW_Vg{#Fz!SD4I$p=s=MP&iMMk{iy&`^I<4LYWM~@6W6S_y)c7-MX*`uT9 zs+E*SM<7zueqlehyeQk=9U46}ST2R-WE2nKqwkjVpBz#)O|vv}C{_8>H~4OeJ|WaQ zO0jD;jxn4C+uyZOgue0F9#6k0EBdVKY?cw)rY-#PRRrgXCH)sVBlfts>oiVp@LX-r zVsNcL*MIh)z(pFlDiJ4w_@;sy$mg2;upaSM^6Xh+|6(7dpgO3h3gRg2jvP94I~R%6E55jQ{MR-4d*N!1W`wpKnr(=9=rjk<=6|4;#1k zeYs~VTIxU7y_B{%#Uj^#o{+B`3EdukW0<2WIb+BxrsJt`B4N)UpF}&yf|qLyuBjEU zHh2ok6zUp7-q3%Zd+NItS{~wTe$U_Wqz%tBHf|!VngX=DR$LPrnXl*c9hT6%l< zsm(ma$MMoc>a@2HCcmzv|K_B7EiXFXFOW)p6(jVY`_NsFn~R^ZzA&Dvr~RlGrN9)U z$z87h#p1sc zNKCH(CXmZg)PHgz^xsrUod|a0X!8`LWC9SL0^_;YGq~$PSz^rTh3(SMcN~>)W!AnJ z&qUvgi}S?QE$R-xEM*^be}3pcM;3ma$9(GR(1ETFxx!>`4gKdnf1kqfUZ!8X@EtzO zSKqi3&i6IVlS^R=7B9Y0rL|OFi=58{b%1g^h!Pxucg#Od^rt=LT<=roD3`);I*GbLeTDAJm{c^6KjpJ?@HHmZg)MGq@ zMk|>1I^X8fwZ?BR`qpHi8;}UUfisD_u}Il?>{})MH-mQ0Al361#I=DM#$pB9oxU;& z4EG?`Zv)Rj;?#fcqw7Tpx&E6%EhB)o1i#AS7i9(_g`OUiQHt+p=vw1@wu2wdB9o?5aLn!SP5x?KOQP5N&YCHUQmo}}yn9ZqM3 z^`N5uTZxr)Au$Ckn2!Hel4~ip)*;mGDL?AJ6RoHpPqCy99RD>X_vnjl5+)Ce)ZpJ^v5&7ME!RfI%zRnxJhhBZ!TJ z4u>MAz~vLt9#i$-*|e#al)?P^@O1#cDsd@2>>^4Lzjf`>?-E)!mtJ;B(tl_2X2r^+ z|88Mj{R*ftmR@=xJBL3GzNfIm^@^OyNNqbR0{p~XmPdS1Mt3W{r73&?_>qzGW=ZsdD{H-+_&xC2ED#Q>we2F zUiIGETzqcj*cL#4A zy`R=TPD#1`yB&J|0sZ$By!aGvsbsvv_Vae>=hJi=a#IJzXThD_!C>#C|NNf7AS9^= zF(v)CZ|c>43&GW?o=CQOatL`HS$G!R3^ZQozi~zVHx7!s=Vw0L98b=^=w-h(voEw) z{}~^eFRta3^s6m>p_0D)@BPM*`pA#zx`Nxy~yC>D zmvX!<>A&wl>-QrKPw^hrXL;`{^xuzoLsI>BBRuZK303MpHN;A4d4w~o4(B&E?UXu? z^MroYtp7gTF8zLhwAXMB(oXus9ju9d8K|exBMA!EX>*wq2 z=_%KLw}EF%{r5b3w0?*Fy8(TZaaz#|aDIw*KgE77-^^0~Jq}gt2*1#Q{+m=dlCJ`& z|9*{pg#P;x+&!Fk0A?13@-ADSLazUM@ovCh*j=Ok`x_GVAMjB9H>vPf-W~e~`tKC> z_aBv3Hs^!Wn8E|RF;*zNg_E6T)7q_2x1|4Oat8Y4(4%Ah_eT2f`Q%%Q7QPS-d^U91 z8z~;kI|%mQbCIsissEmdba@Wwc}V6)e$ju|qrX=mQHxknolGlx@jU4V{s$w2XCZTr zU(Q0e+kZDBo8xJP?~GrFEWQb;vj1-Gp#N@cqyJtD%x96AcToPla47okb?l~lKf3F> z)PGm<-sY|F`vQ8@BKXvwU3XW4;m1?|eJ^;O!|tg;wEZ@EiQgW(82YV4maj|w_wB?v zesTS~FHr6G-&utvNL)Q!>cJ`erT$yT8yH{DUIMEazidN?-%Y-5**EC}x6!j7&xRL% zlKStg!pAtr>wMk-wf|1$ZW`yxk1Rz0ol%JX`^D6MyCDrnqRnR%p34>$8o_T67_^7q z-|#{c7UxUlV_?r&m1+ zZGX)UuA%h#U(?Em=;QyD`1>mFoV=Xe+(1wE9J(V4@^}Bj5$rz0wo%CWJGrokopk-P6AM?e?!T(=Q|NjEbd|q9guiD) z#o2{FC;m<^e1URa%IXV;7dBAuWX_zEzpD!E(GT(#ohv~x!j4cL-?3klVB#u#ZZGZ_ zs+1~ZK!xqNmOJetuf;ja30uFR>YVn-Sdr6;s{PotprBTDCAgL?zS_HM3D>1?b+C@2 z0_%MJDeT$WYpQj&IM#Hv+Ql0>!d#*fnh5xQY45ChJmH*DQ{fcO{E>`0_n@6js zr|NnNef90vQsCRgyYbv}AGj+%UE#kc0QuF%a{hO;URT*J?Ygc+XoC#?YqhA{^;ij2 zx*r3a?_jt-r%gp`X}oV-%F|KEcWr#n#q*OrX{yJ|5g z~D7fdG-8%w8;N&Fq4x1 z_jZy0zs#O3^8e>>?}OO9)c@Mus&fmn|9|t}k$P$767!d!Tpk-ajLYXWIgEZKL@6%M z9XU#+B%m%_gmgS+dH&_I3uj8D+VZdkM=nF=$sxTHI*&6wFD-`-KT0*dbLWgFpLtoA z_fbP>KVsAq`2wE^mt!BW&VYmtyaL-O(-~5!Y;*r>ow(SJ__KW1myC-&cd_0SZHurw zM$B#AygkmPjO&VvS)=t?qqRAEiakYvK~SYsa_~3mj(wKK#0=8eXT({CyQM5GuHtDa z=B?HVEoRQhoTs{vNk3}L#)jDU) z?!a;m8#7sVspai7*13RlZ1Y7PvCT2bTNV(`KFt|(c&}n@TwX)$fit!`XRWr%`IRk} zH_mVaC);lww!&J?ZR=xSo4b#U5nEv*uOVkR=8hij>@7-hx02N83Wuw0hnTw;H{J_# zhmrNi{M(e+Jui)ov(2`{c1QoPEza@X!(09QKF&9g61G{1a*v(VQnrk7?kqK(Giw2` zPTQ|7Kq`q%@GxXo3rXN4ZozM7z24b2`QZ9)wayc~gmN9sJ#%7Y?Mi;&AxDfAH!+t- zu>;s0hR%9JO5HVV-Nr>3&O}T7SNd5>^|MYfAJ>CP#8rz`$} zj~HuFu}$u1RAQArYm~b>+p1O79ih=ytqu{2ombWO55J%0%8X^Ym(#g$uK&c?9RZ{#72K_*44S`M7yFUjg&q>;+_-^KLkeT} zyr-79!_B>(zE|o#IP0tfN=c2~+R|Jbm+zF;q^tI-ICEB;k6P58@2<3ez5cUS<;Q)b z?zVPcS?E9a#fA0B{o1zE_eTA8nmgV*Dt{xOI&C2k<0lKvCF{DeAj@jHy}&J}AOU=^ ze$ULah(rGw3jOC7{j_!rAXn_~^&MMvkL|E0m+L>v=mj>h7v66adgis~@)%qF{Hi}C z*vjG59N)sTS1MJ0Q_i3J+?7Um?r1@h;(p68#!T+{v9I(ehcJD?U?}#j(0p-ny!K1K z6h54*ZyXq|)~WyeqCx0Czm@6kCHG(D`fmuh#JdpM2pib9qs`LY{taNOY`EJx^q;)+ z8)$y>NsXyZvq!r3J5M9|vt`h{cX{pTCd!)awuE7yNxsllAXD6Lx89lOprun7Ikrwe#dn zcLKV@brh``PrX|1)pefl=({Zwz+xiUg#O!|m~rIp0Y2)#Nr`sqoS}&))nPb|Hrm#y zl;Cb|zgg-RA=Q7Ln(ucd{gT2^sHTibyPiNOL+<7mau87R(Dz*Y9%VO5@`TH&___WY z4VLbgQ~yn(gle4_O{Ruv$do$?JtcDplo(7sqrugk=IXx@#Clq~-=*vemXm0g`fofm znnI2q1NR<>{0eK_bks$vDNFpJ+M&c`fm!@Ilc(}Hx*g&Hyoag zM;`r}TQ}+(#9in=ck9XNlKztmLntx6Yw2n8?wyhjcizvDTFeiQo7{d|q&RsW4+e}bof^(Frd{-$uhfHe1$=K5~| zaedhfG?KcefpJ&#pYIhY5tFgZ`SnWm-@Xaw;oMJyVgo3B5ZEdGp5r=;x^{16jE;tVaU-jQC ziVFSb4m7`8GZn1&pl(mmP*SJRKF_K!rUzlq;hhV#`p;eL#_d7QMaZAKrWbZ$ePSBc z@Nujtp#EK8{@y>Y2TUWs+xCCsI@N`96~G9 ze+$8K5BA`=%P#caA=L1%*MAGaVjOD|1K5MUgw`AZzB8evy3Q|Z=KAkQsO8@L?yN$n z|Bm8*47l|r6yv{r$h}v!>}BWBd}uO9hfvZ|sB$E@9?$wp54d(Xv1ib7^`BotJ(2p=f9}se8G7u6e1-m7i0`)*_an!_ zSi~38zFhwu&JHnS_p25?WMdUPI|NL+vlFW~v%<4uRu%Z7JBR`@4jsk#IYKT)F-`9mAwrf zRe&02Qr9ec!XWCH29CQyEA^kfU=s1u;oB_Jukx$pW?=n(qvjoC`lMzKfk2-c&fAy21}Hk>`iS0cfUNT~Yn zWOku#VOQBydik+%XH`-EU5s=({=1$Q{Ok4KwdlW#z+eFTJ>OH*e^)@uld0=NQ05G@ zjpM%$!H3!Oq7zxqIuHH#VeZ$n13dKKa&o_&-MC%Te{X~WpQeN@tZ%Ici^c4ZTnqoM z0G|y=w)+@E|G8iOZS+jPFuE@3zwOZJW^hseeURUA>^BVk_ioCZ!mh{t`L4nB^p)G# z&3z^Kt)<_0MgLur^xuO?|9uGl-Iw&=$0%Y&?vh{ppSp9bq^1Yriz7DVa-OFm{ zSJ8j&LSDxn<~O59-bhU!P2ckPG--G6_i1tp<6hS}NZ30l>EdSncRTHPn36tE?oV^Q zquTDlUc?*evF@-A{b#G6YNh`!OZv~9iw(%nAS8YPlJ~=;|GvTQ)4S1s_ZIcv%}M`# z5DLGO{&5Ym`7rG*>AzdLsQ>PPB9oB4$+Z2CMg8}AaQ-4%;&b%UJLre=p~oko+D};x zKAwH7q5p1x(lyBAubcJXPuM^EYxLiTIHx_=e^=2a_1`;bh5GL+~pg?_-sN4mjA!4|6E7N{~QOzpWUmF`k2=UmHXzZ&bfx7 zrOo{MI%6UnejZMVDQ}KPz*$Cn&J~UP&vNpWSHnWN)*N-a4q@Hi#|og~{70}#7uZ{x zYZyAQbalfzOY6shfw;M*(4LF6UP~}vi9T9aV~smje_hRsc3MaNXW05}McYohm+7uo z#oC&fyMARE#suD$Zmg|x6)vb2YnGPKp37;k?}~&rOv|=L*En6takVDaA9DJKrPEr1 z{_WF8i>c+gDjKUE(nJ0UZK@@^=He+gc}vCHu(mdB*)zU7>PCEtgNf-WX*@>7KeEZCp{Yg!b{5kFj1R=FXs9U5WLC zSj|@6&Ebk(tXjmXsMZr#9ke&L-@ml|*r@WZ%x`iu)zW)>FRk#umYiIH{i3Il(bN{@XxcL`JR!rC zH058LimRSVRZ0F`!E;Z0+s>2wmHJq7_B>nV->+J^2I6X@C(61OCq-NKVqyxZB?|s+51< zgY{cpp7Eh%buRy&5ip99{x5s)0VhSZz3o-E_kwuyz=OBuhrU^q( z!bnieji6!%a{z7im=k!6DB9+H#2k*H^_V>>#$$y0zH3)?*PiNTINx{g|9-!FEvTug z_3X9Rj%)AQU0vNAadB;gzpKpl-v*Kv_{U#1;xp!4=jU%)@H1?-CVm>p_TOA=GjEwU z)&BXpD1YOMpSAF5dA5K4;#gb6$0yeL4RQ7Pa}%7iUYfz$K8Tyw{KPKX)(Yw2`*k`Z z&Jb4mRQultwV>*f?>^z@7%U;aiHE-j7DgKQT~&VK$o9`~74Q9~+J6`+>xx*o+EswL zJ>LmZg1d!wh@0)7Ew(jEk)NLKx&8A^2mI}heWB3_chs!Gp3?sLR*){Z|1Q8?62DvE zZU6kFv@3M@*;pa;vu(^}7^T5quVVY>Dnk(WEqqTC-wo3p_V^pV`yd~Dvx@Tn`yxO2 zkgE3I85-HPeMBn^O}G6so$X+e@2KdF+AYETF5k$~6H)M;M*Q@n9qzb-u*q`j*kJqb ziM5_iNJ|;=TLCTp*0KqUTtCi1UfBNo!x~p*yWn0@wf~;dF1o|!p8P-GV=@>qH%H8D z|DAEw8FmKY{=5a^V*4*cOl4R*YKe6hw*T(1SA`sOMZM5sYgo*-x$VCa^{_wk&GtVC zX;$r@@1@}H^RoSSL7fMYiZJScZ;9p`qPyXmzx=kR_Rnv)2XNoXcV3T1eCqdv`TMMV zFHT#;!}i|`)(7KiIQB5=prsK(j@bUWo;*5R@-xWY_CFXaa;p7TV%?DKe~{DuD?ROh zn6&@w-^VCMDXaEB8THu-cmMs7s+o`tLaNyQ`G%E)U`e(A{ZTTFkapHhSF9Xx&6uCG zWZU>He&)9naqf@xAl3d4gGO_#Zm|6i#wuZR#N@XB0jS&Q*ayS@2w2KN3iy5f%-eLQ z{U3_sAgn8mMmqTxAg<`P$EpfH>!`&#TSu(jRv~Yy{ZEtjKOH$43&QtmW!o&Idaks8 ze!JrktZ=yPzb4iG$D$UOI_>`mtkjIdD&0V6v0coT_8-X>J=%b3|I^XZCQAE120Hwd zpiauTTH61?u-zAR!{0>VTSi8LR>DFLl++y5PWJXc0kv0v^sIp9$tagGsIfsq0ZKrk}qz-4-c7A1PdowVat5+kY)qi1x>O zyV?HdA=YxN6tn%$miB)d^0fEcY~(fWVr$ z6vshW4b$8Ivse=@!S|rIrrJM$$+rSMkN$rfN^1+qHG6FTclg@>B`Eu&(VwnDUg-bt zm-c@?YW{S*4dOlIN45WRQ0uDwZ^>3XSbgk*+?Jso--7ks3((WP!7Ah%$jj#_o!jxb z2EVVr1K)AE5$~kG6W>dJ7#2o?R^nUg*W$bO@9eStKc8y<&*Qfn+5TTd`u>gfzY(qV zM6}zT(*9pbwf{Kk;6Kv---ng&|7!pLN4I~jKJcHq-%KBQwl^EYsTCu}z<=&456>Fj zcxS2XyX!+-#iDd?wB7jCI+1#YU*&;!y^N`$jp5Si=bDk5e%^;Rym5ViPdchQd9?z^ z^&53>->^PcSeSp64z7yv?!{dRYFJ-Am#yx=IRD}uH}58SceeK>Nc-xUU#_(c<0;jrdGeWLc{0LRr#y;ZS$Gp zhBvNjaJ_-gPpb7R-WBp5k&=ctwsOu8XpMEpnADN$I}LAKIpA7=s((ID&gUap|9pP9 z;Z4;)pY3M4Ik)Ai2v<3HAGfy~)5`kiuRyc@xgMhKT^ovlD@*EmV)e^FeBP7w&u4n~ z#=fe5{@y279{5bFTmPI{H@vC(Z{gHGpPuC!1>dW@clFQm;;-Da5lyb#s9yr*^Rjza z|9tbds(=2HD4&t#y+j*G_on`G5mMDZpPyy@^IQC^|9$pw*OV?7)<3^>&$kfp89F|f z$*0@+ZTjr9slkJQ0?u0nHBHjOO{r83L0IC1>h^bQUa$4ce zYVYg6yR^1)%sN&5^EeP`YIy4^_1|6A2l!jwZvA&f{Z}=tjyWTryBvv9ALi8maLmU# zVV*Vu_X>NvRigZR;|`+~F%6Yfj|k2t?}hpl)KVGlZ>l}@KLRq|L+;H}9;|;p^>i5S z4ORV5MIG>on1lDa{)b5YPe!i!_Q|$J1nqBslm_1|*U&Z&t#pA?|AWzI7U3z3rD*xn zF!LVOkTSRlPkRvB%2<>D>whNF9gySR)j!{d#piJ6q3o+Y^}hi1zj80^^J%Zy_?&+x zKBecAR~>Oj#P_<5!MuO(>whg~^1U&ipNnUE&c#_2Wq8qlRsUDu{z>)!1$d6+zp4K< zPW^Ag(@^u!|5^X@QUCYj-lE}cJ$nCjsrr8kI_q$+bJSkf{{wi-+5+5)d<`rn2pKyH)zKM}{5(Es^vw1&3NP+DtH{~zOdjmJ>(=itp_ z^#2QRclcNRH&lA=Jx4m6iBoky;mXt%>1Om;U)_>c2qevZpnlnoVv))nRaS>1E+lRS6hOq!p-a$c|I_U`?X8-hp1%IC(p zb0(bD=bT*KPpR+Ss!!C?oU?9@x15JDef&nEH~oxL&9V3ys9RQPea^P{9VE_R`35KT znOr&r{IrfUTz-bgb!>hP%K51q1LI`=8H@S`89z^SDO1k;a}}N|ZoIe2lz)Cc$Ir$x z=bxWk^0NcZO8EJlH-43WetyL7{1jpC!tV~H?elqG{ti9gGsU#>i7u}`zirqWA*jb+ zS*f4@R?u+s&$(p_=u2hDK}5Bucy95&tj*I|X(EgiQ18kEbCD5JxW z|D{-mUWRqkG*|gQ0x{0T&i2396T5+x-8mQ&Z$i$FLR`%Mc^L81`gb7zvtj=Rq=IjZ z9)t7SJp6pDdY58^-GcmIZ`_A9#&uf#jK%Y+OYuZ9pS!*XPk+|W|3>70t(N~QvG(k( zf0h3iocwRcdg6;7`~Pp}-z_N~)wwHyV6Qe;ldDWB4&_DnE*>?ia7{|BOSykJ*6huu z)@K+}Sy$_7Jg+~FWsZ$^_bS!&(mbR8SM{t~!}_ZHX^-O|Epu&v&pa_N4eRsSD6TIswH%wcMyN`GV>Rn` z&l|_>^s_y@v*w!@`23PuEo->`_+5Y2KUdjUVqEXzI|#T^!)?#~Kt18ZF`G{xvGnQ8-#1!9zz+cpAXyX$*eDi_oKdgUR<>!Trqv7)B_s5%IjN;QT zyjSEm$+<$tl{)@yXycrPPifI6M>^IZ*O~Z@cpGVJXybf`-~MA*zNM0*5Z_n8T4{+m z8rt|Y4xb@nyJ1RH{qy;SVu`Dv`s1(7@jGg)|2D`0>%RqZ!1`xNG^DTUzcpgv(>JVt zeiw{0C_dHG@Wyuq@VmZY{N=kc*>d?i82nAAy{rE&PW{tn>;J|2?|~fmfaR`I|DEM* z@9Lj3u1**~S^vFIlI>B7J&~90$i0m?8`}8WJ8dwhV*OX3{@Y<3SM}db0TzYmVm^`eRMa#_XjHQo!FuSM}c$DQUR=yQ0MT3I9;k-cXbU zXTog}BcET|n{NT~=@))uh4o*Zs{eAV?F^LiXsG-K!Fn%AC+ol3ssBMZ?}vG1pN7VF#M ziK_l*V$PZUxezzves~(Ae*GVe8Q!1HGu!{}l9p*8c>U*|Yz5>;ELw z|4I1de-3iM`i~-KC%TE;!?6@k3><+~nuSjN&p>|WpgoK-VyOQqd(c$qOw>Q0@-VO_ zW#IGmgV6^Je7gSM)&Cu+|2vS=Q_yBu|FiJBEG1Z{TZDM_ytTnQF+1UN`!YN+pz8kw z{PM#w_za%?f7_mwLG}7y2EFH<`hNu9Gm1B;-wzu6-rNeLViQVY1@>p8{x_j5o(BCr z*WY>g{?Q%C?R}~GzZ(7jX{rAk_oDu9M31`x{r^v_hq3-Y!n)ih)PE8=`vY~@(DwhE z`v1FW#LjT);sun7+cfY4M6o4%D5a~QcRlvkq5CF|x8is;!gs{+Cg|Rea~`k5k==DC z&JV@D$gu^He=`B)PN7AIPF=eDxkvI0f?f%`n{a#{#}}|)jq`tCzXsm-~b9OJ@|nW(U^5t|Dc>@tV zJsEni&-jcOjt!PE!u>z8$*dd|$Rq0!Gj9CFeUlBDW%1_K#FaX;Y}_7@H7RY@yk)D_ zZQ8cmr+s+ej-9)9a}xImlrKhp9>;zO&Y#5bDeRYHe-?WPvJ&iXA=@Z(<1)yaVIKi~ z*2O5uP=->Tluy9U1q9Z^-PqAqrEN0I@d(Sdi+X39WtiAF?9`zy>w)!3J5D_#)Lw3; z6b#A(`NzFHbImfcE!)JN7b+}jTwKB_y0*pcgRS#nb366~&L6|^EbPp~1voNo7ec-j zX}b$M@=GT2K{y`hDWi#0oCm|R$+evJK8vxq+&Pk-T9uA%fuixwjBsGLYh2*V|OFX z4`DwO`QCsXtyIboWhdo^vSC?i^0A%>c#39?4Nckf-4MoJ1b-cIJc#4tDld|!jW}oC zG95Wx_imOI2;}7C=Gy-FjeC){ZAdHY^<130b?($D(`^K?yLG%0VOBZe(GD_g?60Uo zTQbH)lRa%O!S1WrQEx`V$MYPjBSnS;?6eco~P@=3RpS0f%^Kl!|olhzXivwIIhKU9`x7Y z{B)cjf%D(69|;?~vHy(o+i<)C$2)NxhGPWBY8+WM>#=u*?zuQtI{K9L#yL3{<9E4? z(+S8K|5FZUSnklLJ%(W#XkXGp{RDP|_vtT#4#K-U75-?%w;Vgu;^c?vk^I0G(y{}j<~UP+Umb7Mlx)M4S9?`4f(S; zK8KxSa!*`ie3!XNR~$#+x(xed?3|io7a6W&#kg*XBijMPAiQwK;c{v9i#;z-o$n!isW2JROQ!K0Tw|B~qE*M7 zowBSO`-==h9OD9wa&sEx1aotOd3m{c`S}=yLj?teg`rSUQDISW~rw15qA?P{D9++xTX(ngLM1{=fC2dbMP>B_&4#3@EI~U#(X5!2|LHY4Paexo`>@y z?DV&2Z!!*HE+^OYPsj@%g)#6*hw`U)Aq?~TH1_i#dlpCfkW;WfhwGPcWFLJ4``fs_ z1IJ@<#C($TEF*y<{q5s8vX5hzIp+sB-i`f3$PgDEr8i<9;rKtcACC=Ub+ zI4Lb{+R~Ypcj_!U-aqFe-5dvQ#qm-cFUOJjX5KboXTEO0k$#HhI}=BgsrXTxV|j(I zv{U7IDvtC4l%oz}3vk@~Eg%zXhNrJ_(#}4_F*d!}=Vll(Y_Y~@6W`!uC(ggaj(NV( z0fb19`nqynvebeuFc6NN5w`t@ByL1=B+cueG`NiA`KVecnNm4U*t*BI~M0R zhwIaDJQ+viOUj6CANh*)!Lbbc|Jr6j4Wmr}!%jK^ zCtqnnrn4_$`z!3c-zh+yavr`N`!?*zyUfAaKBG8)75fgHzk(ynqv6fOD7eQ>e8vU@ zxgK#|hof6&5nRJ>;Ny7pkvrw|GxQH9;5Zw{J#J#SLHk^Dk@j1SV>u#ZU-KT>H^8)w zBRqDIeT=`KVQ+-8%fWss&Z#p9`+nG`AwG_KhhjexJNm4Q-7ny{5nOF3d~E8kk~n`; zeGKD=+tE0_PNU~ZMqB;toN65eaSn@4vVrp&Mi@Q>M$gX1PoGll8{V zbg({Xhvkk<+2$Q6X8Zwn-9)kae=)Ys#h5)4zG;{-0j&@(*2Ldw*k__`j>0|-eTgqs zoEbY5Ij;7#c8QWxTe-c!*M5+1B*L*&87q(Rar`z$Kqv_TwyQ|lRQ~Ok{O-l&lte=wTbX3C+}n)AI_rg z@G~2@i%9L1NsTfze75u)ljDyGLuO84Fpv{$QPMKMe8~Qh5llzcO%%i|HE|WPa;!j6 zes0Lh%_+*W?c&_R{MDs9rLd9U7m z%PK0X`t=_$aM0lWh7KEE?O0@n@ZYwJLZ;ow&Mhb|%*`tfG;LbaBv{b2phfd$rTNX9 zHSgG^Yq#z_dU6!gHx?Y+WylN!@?o6%!C)a0P}HPZt9IdieN!g1>rkk;xLLF2&0BEx zn`7qZb8cQz(xge#rfu6}oC_6mHIyDuHhN>OUBJWf-ir5Bxp~3dV16Fv^#yqap%6y* zqQb()jf;wkiyId=DJdx_Ek$h2N}D!oj{hxM;(x1Fj7*Z7Z#BvZ6c&cD%-X%LvXT9- zXt3zHl8b*F8tnWWGY~{aX_Omkgg^O>cz=G5k$e?b^MCfs2Yq7quMUxZv1e%ox^sNRP@+`%=s>BeAzb z`exGC4lgP`-5ODtV^41e)57OLJma2SyN&i<{`)>IUk7p3YrA%1S<0io#w2Ilf5RR} zers_ws*8%xw?-AUJkK6g6h1dFs;JvJjm8$0ot`tcXyDr1Nkx&xMFWQyl?^ZIR$UaX zE^3MJ)kS=>49XJwGl<7^L5%LN?XME}s|5Zkfxk-NuM+s*DuLXHs3&vO(T$5k8aMYC zQkTZUMiDu~ZHH{@hDPKllOdcHFP$ydyzS%`R0lk%r?!?3=lILbzlg4sn>g* z<5SM@4d?i&bNtyk<~Z%8xpVB|9Q%9P(U=h<28X+inS5aPa8;jyefotf%F6qd^{=Q5 zcbi^2FFbbkN+s`IIjB1xYQqh(q)HWSZ>M3(|mA*R_qPP@Jq~*i`rc z+JzHdrmXUrVusL$F%&Tegapm|(HhM{q^@%=Zn85Z%z7L3YIPcj@V1%L7>&)g8gcrG zsq&(wD-Ao?s1E8D9*i-pvKk2%EJQHt6xguJkEX=RT@5?dofKEDr6iDhEu#wNZsx(v zX)afdjzUzpcNxhTx$I`Yb{78z1Kn`2Eyy%uc8tKU~<)SQq28ksX1M_DxT3aq6`PVY8MshJW|0e3> z$i>wB>kv&&u3Q|P&yU)3^32;{Et-EegB6%};bLKa9WM$^rnoM@n6Z_}#map8nw(Pe zejHZk-_CTlFj?ZU{Nov{rOA3bHUDwutd)5`0<6uSO*`$(XK=ATKMbDJ#e5ux4f&Ta z)qTy^adBDxW?q!ZMLhp+yeOB8oAPhvMTJ~!$-j#imF5l5xj(-bjrNnYCGtCv3^4xz zJ5Lw|)6u?it_c zQkm?+f8c~tR;Nhcccu91T`>1DMi%@EvfR}Y?q{CPz-iH`_+tj^H*|AT5NTOSW2E;{46im)yQSyUjCYg$%j4JtTQ{nH%yqhGed*+>nT~5rnyQ<0Rx* zH)JPV7B5Dr=PsWsWST~1K$g4mBq4`rBoDnI_n1qC%=HqndmH4ELi|kK1GIbGqY|>t z4Y>)I#jlc_@J}HdG%}Rrq@RRr@e+wW9}U#a{|h+JUDFkpMaz1qOF-vf*4`dv-w}&Lpj=Ld$ zb3<0SAz^(yd&-^TBxKSJ*$I~t=Mip5SpS?k+PXqQ?sP*=W=Qta^=`=KM)5Z0=$_3I z(ik2A#r0}8%`$Gko z&gR((H{_=XAUOy_E~Nr%U$gce?k6F4x*>~kDIv$ZA>ltdvQ!c^5;9O7fdyO-W=MWu zvC<9M-YBkNIv+n%LWZj&ptzog%i;yh+mqJ`iBv}j9P%P{p587bS{)%!L}Gsha!K(p zqxejg`E#F1$XIoR0gc?pa9Ml>+rkSbrhLeCb%eknD|q&gHbRUM5duX@FF|aJ|c1hSY&O&~u*i{S*a{!H~KWZ!?2YaOau%*q6Ua8&1hTDX0@+nf4P^r9OcP}S z*Iia^V#!qe{6UY|kQ!4aHO`c|EXPF<$ zb%@so-X#CfYylsGe4L6AoYIQfrc2Cs(N%Cvz=+%b9U9 z-*T6^-R48Q!`FZG{rYFCxTKl&Wl~dObJTOI62W2E#^;9jtXGp za-u1=m{k#`CZnIah`AONQ~``!6B5y40f;a)Pi;#yA8wRoA*hM`#S3x=5V5-ExF|J+ zJr)wU?J*HhIOpkZ$aCC~sVVF=5^|>-@WNHfgyo3ynjW9|~AaLnSVLuU4 zq7gNP-7TcGM${Cx6^4pDyQ7zg-9C^@22)em5fZY@4Y?04ohj_$LZ)g&O<|7}Qs*TS z`#F$H?8v{G!d@dG&vHYah)ZV*`=F2w8c|c&*M(f75jBPVR>&qV5xW7jXR(`_!nT4W z&%V|T`6KPBDQu;XEgDf%*hxYj_7aJGjvISw3aciNJKT`Ghjym08zqjN8c|c&TZI&l zbLv-gq^37NDWpszY6|;-kf|C`Q`ldH)Om@tReXM@N&;zBQ`n9&1&g~OcR^7?4s=7N zrm&MFWO%%j!fv=!?cWWVn!+9{AtP?c=?pm^nK{P|3F`xKoqPK=5;E$BJkbq#uNyKo zg?(N^#@&!NxFM5n$kY_}CkeU54Y`9M*-!J`iC1b0+g>JK2{+_#ZpbP(WNHdKPC|w! zIC<}cOJ@o@SIAVCNDpRSS3@psE;WTcS3<_zkPC4srE;wsGBt(0PeN{SLtfy9e8CNw zn!BXQ|WVb= zP)n#)Jmq4DRX&8LYSFYBr$`1@wi?}x2gS_1nUJijmsqT0VN#xhb*uuO*c)S~Sa$~@*QGRz_>TN@W6_gCQz53m|}wK%CTf;Z#P&Akp9`CLn}j~q&gotO~;#lw+Q zkdV{eka+nA*HY}oyqn3hce){~8S+Btoalx`oLoz>>o!Wr;DHfFX%sBRWj@zZ?B%x# zDbWZAB75bNLRxEt1Cf2q2SPe}iP-&-a^?*`fARqB9+!u7;_lxK`7r|Ib1lU_fp>Fx z_Ee2)0KHeBX&AhOT-Rmc{Na3HeJD~0tu`(ZDU z*t=2A*xRB0S-KYum5@8!kS%eU&$Sf$l9@twYJ>xkec91MiVun)BDNXo@XX$PwvaN7 za3Hd;zFx>wjc_2cuX#jBotH=pe2sD^tsIE#8@`Z`aW~`>xRj8)+>m&w4cAian@SOL zo*kYUVX};ZZ`_bv1C=-fMn2b4>|59h^6ZEkl8dI&bEdl?QBoX;?AsSe$fz5#+6{T4 z8xq#JmSW$zQ9{Pukc-`rH@G2Toogxf)(0iz7B?i9=_N;8(v)=K$Bej^V&C(LgiN?0 z6K+T@h)77hB8Y1#_I-_!FXa8;2(xY!e2D=0TuZSZ=q_ZcOQZ+WOYBd1ElyzVQ5@`t z4v>&BH)J1NN~tV#L&6%@QtXG-8t4``(!?AOw1TD5Qx-&cdh`==HmhmKrJ92c&m1^twEI zAB}7u0@A0ikWLzTr5L2|I3YbWa$^NZ*<2xI8fh^Dr2Hfy{WbC#Q&4fKko`1r#9)xh ztwO3bvITRJK$Thp9jlRFnA3irh|Xk<^uoucf&RON%+Sb^VITuqVYZfMAEJ@`sUQO@ zg+w)C4h0#crm*uhvbGP%;02;}?fQ&j#$Q>Gap)ttltA*UHkw)w#V;&H)O(Wlyf{cAtNJ1l3O+m(e zE#xVU+|&wWe6CCuU(m?v4j>ac2zf;#%R7Ti93tc`jkH542PPdT(pn?q2Z9{DLP%I6*W%k1fm!DY z>7tQE?LZE>QAjT@5g+;(<@BMp{KeS#I9tczZ%X)x8~!$2=08gxdc=1^Vj2mRgVYp+ znE!-Eo}dqnb{1kB=9HPl7N=*KJxoYMBi-o1=FAcj)5vS|p>tO#I~w_dK6Ku>%Ff|l zJD<@@)ZVD-a?GoUOUf07Fab# zNJJwiP5?P(wvd=cE}*A8_5>jbjl4;+`eGr*9Iu_8^r6SysqAQE7Rm9?Dmxnam_GD` ze;vlb~k8hMMQbM{(gMQZE@nA9`h@Cd_F< zBhBdBHnkTLTjtd{hdy-kAR&=DFL}Q=$W;djF^=|WBP6oIOZra*x%NS2XQh|)r9Zsxb!A5*Tl;|g?OSDMl~-pab*|6D+zCDY7%%ym zIyZC_VjSxwn}>tkI8;bNBgJeXH_a3hTkX~9-U;O9qm`ZGyyU|okXz1Hc8>Rw3+Y2| zyOKHkEdukw4%$0$aKY ziJk1#>BnBOb-0koDPGbJvcO%33Q=E{#C@FfpE)FdUnL|F^Xj}oAA0xsLSk#Y80Z8o8W4^ohPg zV&{5v#D|WjoIbRX{Kaa{w}?IPbd7|MoacnE!e#zXRUpqCCnTb88 zI>>Xk3yEsvg-IaKKP@Dok%Q<%U-(c+c!M`KYd??|e-{$dNQ)AXe>7{s{3kW?Y6Zwk zeT76edSjb417ycIA#sgtpw7#4g%}rjb*`fiedQz}QH}i68|2kXg(NgGbTY_mTZM!# z^u~5Hedz1Y3yEpuF8a_nJ`s}C$VB#oH+Kt(T;z={XCla3t?NO`CM2nmL8C!FyIM%(3U6%3H3j+n0U>dXF!zBkUKL_o z>D3uC7UWCbHRst;jclV2{VKOLNkSvF^r8RmASArW8`~{xJ6{hG64S`h^r7DzC?u(o z5lq{+%Y;NWdtrElyYaJV+ zlXC#b?(c-eyd?AyeW+oE+OhzW8d^dpYMNaIMXvM27izU1kY!d2ifgD(36O0bF39+s zSL+M<#DKY4P*g+9W&kxZFBFu}(B&bZ9PD;W z2hgJynWqa1-{g((+Mz&=&1(e3G}MWR_HB zC~~Ja!pG=k_cgB-6xR?JO9LIv?ShOgUadoz!cOK}f}$E4M+ey1{6SDcLtl0S>S7j! zSsLN3-UwfytLYiKOpZBO%J zLB`*`TDQ>O_A<8!ifYIj0My%jUQj|q&!Vvh`k0>z3g7LCP+YFr0r{;p@TiRZ#k(=u z(B+n!EePzGtMC={LmlXIE6fT(aShEY2dXqD2})?FExm4)xlmA2LnDR*^)uHBGVXB_ zC$`q1#RmGDR|yJhsEnOtfcb!+h=xX$01Y%>6BO0Z?h2qm=C^`k8aj<`cd(g{YJtDg zP~VY2L(I;C5*m7$Zg)R3A}Fb$P#>V7=AnX&d%gKOif(s*^B6&44PA|985m}66co`= zau`s=yiHJ4L%;L|8g4!1sZ9#?8wqcYG?>; zjWR0*8TWbf_0e#k(dJ}9VGSKv1vJK7Bq*YxrF6Sv&2@sJ8tT#*Xq_Z$ zF%3mq107->DJZTXi}iJ=d77YvhCV(B=rA)bD5;@y>2?n{9~5M4^XBUt+B(8~Lr_>l z1JT$6HRgAMA{vU)?MBT|7iKxCp~nUS%{IFVifO3z0H8T$wV=3$KBU{7YaT8r;YH$h zS5sbV;28$j?Upx(!hG{QQAoN9b8s0N&<|*Vd9$GKgHCP*9Z$Er(0oErR6`YXyNk>Z z1jRKpi+%M-^EW|B4P8mMdz9I%D+?n0kk{52c9O+rnV_hK4x`&$Voneg*HE)cprz(~ zK}ii=IRj{!xklOA?zMINNT51%ld`3u&j$k?ZQiGBX{aOJ?sD@LWlKY+((SG=zgD&$ z_S(9)JB0A7x%>4x=H8g>4_gHh5pztGJTWhGb+FYq@ zX=n%C?s4Y%%9e(v)9oH_-lA-2=vP+d3Fec^R>Es*G2QNoW>VSG&}r!Pfs@SNl`Rbo zrQ1E(Y>s{j@2{b6>2^;s%LRoW_1fAESs-Rk6cp9ac)Hy+<^n-+4PCb%(5dFBf|44# zhi-SR$@K}e!^ga~4x`&$XWp-DY3O3Q-P6ohl`RcjG8*V~^BZMLLl4vKo?+(o5L=IX zZ8dELwBGC_D5{~a#sZyb4igmDkcEyFILkalP*Ov;2Z7EuS1DUhcx`=8w|kDcLD|yK z1NlJbnzssyYiNB-p!3Y91SK_eEM4LG=7)m9PkL>&Mll37n12Y0YUmHT-Hm38o-B>H zhOQq3bb(nRD5;^GHb57elLUpI^4glZFVIEiLP1dttu6q%*jy_puAz4Z0$pNWB`B$( z3cB4(%?AX9pZ41NwH?r9=4*nYULzU)BaHZL(7jwJ8Rd^fWLJzW? zZ8F1xwrJ=wcH_!{{MVbMSb@#6cWCH1 zcHMhX-D!3ZRQ#Mb zUq7)MZ!z~1RHmWl**dqHGX+i6&`5fdyUgW+>NK>e6VTtya|LbCQ2PUc?lx}{v_(TN zvH{#Wd2hZdndSSA4;;UlvsSf;V4-CIKbPe+w$p&{l*CJZk2mOXC@D4IRVQ`w0X0j;upR7dXrPbXUr!A zm1(F0d*!p{2ZE+*Xk{_bbLMY?>NIpk5zzByGt4XD4>j~mSD+WnGC^B3G_4QNi{=DD zJG@BT?tIE?4ZN;h{^AE5n@xbi4)a7&F#h3WX(}#5D@uS~HZK(v*U+6vaNrg5EA*KGEWke)KGi2vyaWo1jXL*Y8B=IePaGyQ23u- z^e^_hPtAV_N@(aXy4}yrF9b#3^=jQsxBIynfS1CJ|9f6EfNu8-v%R3WhJK(A`qCUM zDDu8n>-dR4UzuF;!1P%|n^?>LHtPh%KJaQyV5NL*o-HVx^rBDbcE2%i5R}l+BKFm9 z%|``AKlEx{30YvL`K}=2BQJW9Q;qM;{|Jg}sA34v_hu6~72Np$%d1sDfA@pgTToI% z2hi>QXpR*W``D{BeG<@5=3GJHPrT??Tm*hLPZpHW(2b=)|1mEY6#dkz^%C3sFXr8X zjL*F2g_%IVnlA~8Yv@I`-rvkG1w}shYK5l({cbkuFZHFNWgUV3FvEgkUwE~GkOlrU zhX@LP=|u-Hg}cmy1SK@onzg*!JX%onE3ekOZGjBy96`pvy{Jn!Ak(^0P+UVt((PK- zV}c@Id$h#uzDIej;eNdUzkWQXITUiNA4DPPDm;zL&?FR2AlE8FH-ant#)(VN2y~o4 z(CRKIs-X>ZGki3;s?+t;PYBSZxKxH8gJwP!nr_ zprnR6@$RG4nl32(o!1s#hK&!AtR>2phAd8Ynpx|WEe)+^hiq*2Buy z_g-5|3V~W$Z!23GTEK#8W&NmZX(-OpXl*qfBxR_frzQfmv3dv!|KPPXJ`B{>8YL*I zp%1$PwX>pv;u?Cm3D7>)3Cfm+j-3M3-nvBD`q69aeA)_ITa_&h?T>JQ4%Q3GmWJ$7 zpna{+lr0V6dyV)I$zlbd9scCCwVs{7lhsa8R70OM2kLAM6cpFc3GCrrtOEokHPoX8 zP*-cIvh}mq)|3N*x>;u`TN-+dsJrzyWlKY|IbrN!J)&%BXe)=wp4L0c)_=UVZl+c* z>nCMPLvM3P?rjyL&EdvhLuKp^eXO2>k{Vh~)Ylp~2&lhh?>IBP*Cg-uh!EufcCfE5ETB?i;g=0Xqfe#poE5O z)?&m84P`+@cX_ogpA0nI>MF?C?L~v=O{%SGL2(UzNw+(~;?wzL)1D$g8!EZg-+JRZvnxC$pd?Sw{(q<#@I3 zV`)sbP8Sr;^`iGC0!^{55tPu->@d(&>mfnWpjYb`_Md6in}UoyFXB_df$7%wg5nyw zgKqZ#t8kdqSH4&42HKiobrY1-(18)41FaE)Vg+8U)^xiESw{#8hrFl--R?~5I6(;w z@zcJ*!PZ5BqJ>_qKiG+8S$7IDioECoy4^#p=LE$yG@NetQ0o&xk;Y!F`3C|WW*Nu> zCJh>Thv;ytji6YuSL--B&?Bt=g2E+U^lTnbjWtbBLPL*ID{3tk6m8=yvB>ZwX3j=wrIwT8jfNKHG2R)mq4AGv8w2 zVJvL!MMu!LF0i@_N@(Z?qJ`E-LD3dot!ea8i>w+!MoTYxhUiG^ctLRu^2_n*(}E%$yb)f^f?8vJBq*+-f6(ooYW*q5*w?G|<3ymfR?Cqr zji`orKM+`FRSHUIs4;KTPO~Np3U~BI_;0r9)2&5O;4CwzX4GR73Z61Ukp!q70sa)zAUGfzGwM z2nu)cM#vAO1Ls-81;sRUFx~F?)?tE@8aj!-b%S-Rph#D5gx?cwv@Q@7*U&~Z+rS0Z z?ShPMUM;?&CUBwkjG(B7-loq_44qH6d!4mHP*Ow1?8bky&Jz^wq%ux zLz~+GZL^ZfmWJMC$vlUCjYY4aMox+Tz4RwqGm4gH!2^t3fhP*OwR(d|BC9U>?^z-y}m zoKN6cYn8I4p`Y2mp0hS6TN+BBq5{ubw<=p2I*V@i1?wqgYoOOw)6PIIS|2J~8oI12 z&_Ap{lr0UtvLDb(RtwAm;0iVLMo*v}R)wJOAg`_G=yqSWCJBma=$8=CE7n3maSa_o zxBIHKR!~wyL+N&3v#t^p9_+PsH6835)&qi~F8T@$H*`H6?3>nWf?^ul#7Vyp#b-kMdGj^6575U}rJ%5eo@B%R#F{K9qM@=5K%ZKR1VuIU6&>tn);d8k z4Lw^3^tpAlptyz}?*;UQwM|e$L%Yzw17BLN3rcEeU*t9Lm90p1hT1{mN zqZ&G$4)#A*m7ti0Ze>sT#hM~0uAzPDV1Koa6qL}=eRQzDS*Hm~YN#Y1=yxkF$Qb6$ zS00DaKdc7@g*7yl?eI_Q4M7nNb!KVovc3}()zDjXu)D1g`Yoos8tTvPVAx#+#WmE6 z4%W1*1tm1Jg$~xT4;Pfw(Cq0zw!K=A5%K2h8+P-6eW9SRh8Bf@8rgRUifCvJQI7qr zps0qSJ`jnld znLSHTOhe-b05!K)3QA~b4p9r6t0i!|Tv5VSAZ2(f`)W)37G+CA(GEbZ>?f5i4fU)9 zYHcS4B{VdV-oK6gyC7qf*H#ZY(6)AS+*n}wM?*icC$zK61;sSZGA}J z+R6S#+0sxaHqp*DhkA5=4L!*ecCkANN@(cRBA~AJFhRyxudSmv(sZ*A5fstTQ*3PA z?N!Q_hR!bq>S1qCwls7*omx+uE*5QLoY&TSSj-OevY%46G_ z|4_Cxlta(e*KPry4O`>Aw(eq!DzhsDMKr{l`arooNl;8fgXyd*?1h378rn&>TWPOV zwkCLORdffcvaeFMG_R!Rmy?kp&#p#dzY!Fc&4wGtW{%8_P>eW)N~lGoO+tjhiDW0Wl~3f_zkzmak- zC%CUf4E>1@Xad#tjiRv7RX72cp#d1Y10(In1g+H2pSeJz?e_%5yhzOaLOIR2Zw(8z zV>=pW7ah#p#9f7t5Kdlw+MRMu;Y}9xczc*A>~s}MaVZuKaTVNm>V$^U!eqNn6vC68 zLK#Vg3z3queF{I&!W8=&QHW1*6jo7zMfH%Y;J$GpbT};>V80>?##Be)1}f0P*FJ^D zW1%p^wr4TZ30L7wD$v3{lrz)r_pw7K(Za!Yl_(g~91B5QiiIgYg`Tu9%dQoLxT`RT z3bYW@6|j0VlXZHieTgU}U4>}aTVs^QgU;%PoZ-j6xP{~ zh{6t6;X*3hjELWH6;e+jtfz%D?46=u9O5MD2`aF>3J!OYlu{T@3+wF;1a{<5N8u;e z!hX6!F8py1D4b5}3VhpS;9~n`Q812hESy9I z=HUrfA+-X3AsxdN_B)~waTV^M0xkUHQ#g)!xY91DVWu~@3LhX`=vbz9v)x5d!bOZL z^bFH=l|5WgagCEMYDu~dqnvGAr3-gZZ?N{__Ht2(xC*0jDd{@br|=nT?;86$QK)kj zj>To@dFJtN_QQf=E)vgsF>`ah{kEWli^N}F%G}&&|0pQwBGLMoxw*-19Az1VqfTx_ z>u09>7Q2U_h>JwaZVPm)JxWl_MJX>IrJQAux{J&k4~0AIV?-hDDvZaal)*-y0^jO@ zm;K);3Oike6L1-7&fILZ9}^Uw?If9Tg;rDm-DSTgsLn;A^*ept-S#hn;w}=ccR4w` z$1a`CGT7-NYRNruH_DltRz~PlR?Rkhe+e3%G?7}**j)tGxk$8%sr9TqT+lf#60ON> z7SG#<35vT&v=;Mr;060wK@YizTG9Y6pqwdAO@KR&g2F5IO``Cet8gMNLqmyPvmY0< z!$q8fhGr7IVZSfPm^Yl|Via)l7&@BhE&EqNQ5SL67do5h9lPmV7DU`doUVngCwkZJ zD`S&_{MmkWuTTP=@1XygmEGzEaRs z7jbM0_2dlVQ~O>)F&A-A3XP`LXZFj2k}jer4n>JRxBo4uc)nvx9Nb2tFYMfT%yOBF zBwrUy1p3n6S5U-7><)$eDZEA<z@Z5|jZw~N6;u++4R3JR!e;xex= z712P1&UY>wjVtA4folfYHqCLR)F|wLc=`es^)ZLFQmN?LiV2IfyrjAngW$dYc2K3x zYKb3LsY==4WeF}lw24DulC(4(cv!3bP_0e90*3gjJlv`u)+%dxq??4>I?yBnZgsLD zG)hXZ{HL;K*b!xOQ9Z1z^kyju&SYV?` z8{e~T&EJa(@z+F0FtD3_SFKpychS3v zRFA2snSIRaiazMzhOuJhJp9^DpM^{e&ga$6$GL^y-8`C)vB zM@}6vuXgUTd9}-HpvTYwC@xx3TeGBgHZL2|LZ0RRRCMd$#^5oA6|izP;IFwMCwQ0D zqck{y7db0)J`G+SyxQu~Y@J+h$ho@y(Qa&YGlSP62tx+rp9i-Gk3=AAJO2bv<6o=1 zsa(Y6@3l(QOfIfTi-K})^=K}<%CAzDO{KSlwZ~(~WU9yK*!x`-yvADGG*}V*DR|@~ z!PBhKO@r~ESiV4_ALWV5UY%Afq+*{^yCyB_M$z473l-URMAolfWRYx<%@4*I*_?D_ zovwoDJj;nJfylvC1_>IW?g9cvz%;Qv8gt^9wutF3DrVV^VhqN~OC z*wtD&U9D-VtJ!(@VR!T}J8v5g|D)Y)WV+=%X0Tb$kp9LbJ%*MuqF%cmm!%=PE$6Uw zbUhi{-DY#PYB#$7qR&YO_C&{S;`TW=y8pJmv|XBzOn!7tp)zs@iW`e$t>eE z{N3}Ao^?cCGJDZd{}7yURK;+t=|V-M01o~HzdLnEYq87t-CBKbs2zy zYo))Qg1;QF7S9q#iKuFpu3A#PbllSFrDK*aTUED0rUui?`x!OM7SF3$Hh=z#+Lgw< zWvk{at~F}LO{p0@ZsI6|dMj4WUcPepym`xA&54VbL%FS;K*XcwEvQ{FwH85~ zXe*5+vsX`?IK5waMNMtpqJeInoT&+?C77PnE}y+}+47p<2OV4?Hdo9(rnaVb={#e_ z!ez@>hWX2YD;6DJTeEUc38_Fr`bjuWW84&tKvqX+S*=j1^<_up1(dlycKM=}wKa7s zmm4+n7tda>!i}ze2A$w@R?V-OGkXO}Z1J+WM;XW0E?>5yqF;ZN<(eh4mmgKTe1$Q$ zZdJ|v<+VrGj2U};=A5KTjRn4F-s%xDgBw#`w#VT8j8!P2fll%G>lamobYiYJMQV4P zDvm7E!#z|rN*M9XU%YJg9xFnbTfA)Pg0TEy^=Yws>Z3d>K}(psYI)7vWs6rWSt_B@ z<)LaYeO*)P1O$y zA!B}wWlL+*)y^QOi+T+(-Cfct>u;nBE0rjg8mqOk0*PUhRILcS7FRwI(vz70HVj9;OJ>x0NEKhNRr1cz%J{F z-E|bHQe%F~`y)T-@3kw~xt7+hM(%3rX5;;sazM573Q6XnN*(&SvDUYp#q&5VFuT)I zrIIN_%8QU>aS%>+m4onP*k8}|4f7W*u3fs!@nc%u)}YlbT8jLk!J$ONWu&|$>wC`Z zxks(4Q*LF<bh7@;zVNXfrc3E8=nhxpTr5c^5p?R9|9_lYOUZDyz zXGBHZcj2-nwS89{*Vnnv?dy!gE0-->yrOSko-cY}#9ttJJ3j10*-;>p{9_Pu-1pDu?R=)#$J?d=DH{Gh#AcPcnDW^0@~rTr_{B zhz}_r(0@$eBie-BJA1LU>5qD-ZuUS1u!UMK1BdYz=@dYz=@ zx?Pl6MO6m7X}NAUE!XX)<+|Op+}9QyyV=sCw*|ygK9I%Zi>7>#v;}_?S8`wSo$$Wo zJ91z09eFmpzT`XMvoy6z<{?XS5|*Vo3Cq%)gbg$nFJ4}O-Rb_E%)2fC3x28Tz2+S% z9MyU)uAfR|J!!>2sQ|q|(XJf1UJ#I1s`jkQS&!1(^zuvx*XuDY_nCE~*XuDIUav>U z#WVP%S^S8TCp|H2%c=}~Mk^$CJveMCu`lULoFx)}5+&||epiAKt=y?VpX-uYlIkzn zS>`xZqwse>Rh{*GG3(O-x(0IJUn<(K;MANSVETyOp_d{Jh*&ShlvpptlvpptlvrRH44;&;MlkY{LLOnsTi{Y9hX{<2YWf8i*(zjTz` zUpz|gPp9&^^)k$kkikc%#J=Q9qplYTb1Qzy-#jw7t5j%z5lCo%35eKV03!D1U&Oxb zt90vP^!q(t??ss?!f2DqMbSgq`rxh5RBUKQ!^dNHQuzH-dyB+}va z^q`iq`HoC;5=5iKzEmo)FOh2Ys5clyqQt&PlsHQydPY-``17NZQm^qM{J<>E(3u5c z;_n@9Su&Y?3L+XnA6YMc1XnX+J+CRTp4XIE&nv{rzxg6jVqYXmoFx*yz*2GhdYFpD zSB^^TE0oGCrRd0g;WN&uk(i8g>a^UKCnvlwQ;yu1D@X3jmLvD2Gef6DYDDTQc9Hs0 zC{kbgMCwbONPTG&sh%=4H<9Ws!jFrnRAOH~RZ8^2X7kH7WpaV8fwZd$pufPd%$aE_rNq91 zQDVL3kQ^n}^OO?%T9pdz%c>Il6OIoJkU~9jW=P3>(J23^2WORLxS2?avqa)c3zu0l zI@N5|;mCavIrA}82bQSS8m#wzi#BwfR8sZUmlFGGO6AvAQ-dB zw6D6A*jL0#?8{}wc?YtYao&-Z`x4`X_oc>>`;z0x_4J^bWvXz9)hL?fUfNmh%XFJ9 zt4LYzz_AYK9o%6@`7=FtDRG9|GS7t2cRQD2nU@E$+~X@x>q~*NdXc>Zu<%_kFDfRz z|uR9-k#g{xnKxJ&jDvz|6kZk?YZ< z!)J@fpIH^ZzsW1PUhwJo^(GH_d3nYmL5Y2-RAOHumDra?CH5sziG3+lVm*PVjY_xj zGBxpRGXr(YtXCm3E8~JcS0eW1N;Ml_BueayM2WLR;wu^z+E+A6>?;~2){6$&QPW}n z;Gs$qT?-7G_KrR927({eqplvl_kQ7^Hy z+#in$pDi9ezv*~<4b!o!7eqSzpsXtnt~1THqM>;96%EDp^rHf@Oxjfk*K>u?&P3TS zmyWMzDjnP>ce;YVb~85z6pssh%}vdJ^=gD=CDv;(CH5793hm3466>i)TGaGZH<=Ra zCR1YFWJ;`?Oo@H1Mw!f#61_|iiJBYuOV^R>;ZZ6TWf}THTCQg)E!Xpumg|{H%YDh0 zl{*q7JT+@b#D)R`&jpCBVoj)I;i#P3cmbp?Qm zY@hLD`;aHwr#wpT%a{|tFK3x=PMOjS_k1a_uas42y_8W5ZtVVYkk~WaQlvh0s@E@4 zrhPeZe6rpi*q)Ws(36^$`_h`xx2MDV`$ZO~Y||_a)zv*S~M~6laDTcbOCUl9cJziRG5z)`Pcnw! zMy1L4BFQq$DY36yl-TD|mDpbZVp7i~dw`mp)+-kRHE;6eKV$Pvhu2FWE%&8fYR{K= zk^0h}p{7xYPD=DFrE17$P}Pvnq7wT|DzPtaHC*b`E0}ag(RwaG^(}wdDsNOz?ndJ) zaf#g5Rz#|owi|;l>k`(NbCLQoE>b<;s6~nFg`PM_os}1VIC>xxk9W~2P_IxKmCVoT$yrd2LY7;B^zEE(3NbqOL%wV~ za$m+Bxi9OET+cjGmT^v;mh17S<$C;SdA9g{6`z_b*DG2_?k@-F+x1G8 zAA#1BBfPpLgFNFcSL%sP|NJ#$mBY}UYc}<{pg$$5W9kL@f0cGGaB>vY{=h2_0)*EF z5(xpZBcL(Jx_Ku&I~x)b43Iz!8iAcncJsi^?y}in2r8olL`00pML@(6#f#!2@CU&M zI-&yN<3>aU5$=eu3n&IbQB=6qb$+L3&pB1e|Nr^V=Rvw~#@ zB`1>D;SIU%@CKHLQ|6Xq;yLjUy^HPgsQoEVJ;g>pi{ay=pT%gpTslpcr>yDbvN@pe#)wK@M#}>#+4MaAK8o)nWj9^K zXCh>o@Zp@tG{EN`WCPzH{GCko-)9QHcbR?$mC1c<;%|S%X26Ke3?P;RR^~P{fTB(R zi2eUaDn6*j?*xb6(08)U^a+2LQlnE0Tdcq~T^@7O-I76}e;rm2Gp@z=K$6ihpX=p;K_-3AHkMNwwnWD^Y?+yCGb_1ec5;h62|$Pyj?Hk=JdsW3v8yBC(jQq zg`46;oQO8ZgijdQ(u{YrV{bG@|F-Ho%72b9$(ofc^$U3PS<m;O zPK15Ws*IMWq2$PCfy-A_k^haj+!p!Yh|6s|`=h=&k62VYYa`EQQA=ncCSLUw&p_cN zyFBD(yTq%(vYnY!*q`i&AHpzs>}iPnZdHtT;tg}SO+)c^S;a1`P~<1KdB{_F^+AVqm`I_UrMR2zz2MV>-RmIvt5gkYN_@vKiQlN5an=TZ*R zkS>~2Pw{e)%D$Lrs)W9e(V_DThc2UG-Se4Oo z5K6X3OAAuX*kaJIK@NmZRQ{zOmw+3348C3Xg+U$yt2_c$GebfK*?*2T=a8PO%f_#E_{ZNtN_ z+Op4nLIjn4W|e(rm3?M410C|3BMEBeQ>179I3hh`l|5sXJ!3U}pqEj0eBh>c^p3L} zIG>zYj$Fy6gA{FgNG!YPli>BY*=O{sFU@$fSHzp$!sUMbsZ72f${Xb1_!g+8vZqa# z!_#!x)27RwHr-4w?AIIt-1L*)I5OQNHoYV^ouv0FOf<3SI$V&h^Zi^s>Md>=ZiwQBJVv-N?%JsD?^=30heXo1 zBisRQeALIfEb8Ojq^Q5j{k<=i-`{wJ@5wS`?<3rJw>IhrxoXrW3~Al`c7*e{2Z}sK zIDZ46$YX?ibwvI3t)0KiQ{*wiy~e1&sfE8M#dELd4gMxce)ijO^Y>%%vwt7gug-hX z^TKP&Tj34mCx-mZ@hSRIJp7$F{C@3u-0Z!`?{?4qcg@G8{@Y>B&WD@5$BygkA$~vS zj?evf&K(~9b?#^W>oB*UYlHinnS{rm;S1q=!uRqWF5;Iee?5GK@_F!8$~)lwaGn_# zz_%*@D14jpFTx*$k3v7c58tl*ckrJpALcKeUL4o2l)oDOB;4O>C_HAtcPL*9e_8oE z;4LTQp*_#k_ru$ie;U3-`M2Qx${&MoRsJG;oALwvwc(57ZNN9tVYw;rN>2UE;HSZ> z@Uigq@EZJB_?4U=-U9zJdVWPlE3~lKQ_D&hvIMybdqcVexn~ zd3-@p@g4QO@gnf^uHhhbiZE z-3Hg|dWmvg*Zsw2qlUf0(s=XHI9a$eUr!S%Y{rkvOHH$(Ql>pDA`_M16+@Vd_7ye@cMSKxYG*Wh|xZ-b9U zeqPsgxL()UoAVGk3GuwHm%w@6^180V^}5~$=l=7${w`dv>jpf-etBKH#d#2RUe}p& zUe`ICS~b^oRXMNgy7CuywXT;@X0xv0JU->RehbC#>FB}F*JG5I>sooau9cVT8gACL z@^W1(FV{8PtZU`vx>jDUYvtv-hVP4U;OFaY%FA`Fyj<6CUZ?zgy+e7qu9wsJb9}k3 zm6z*UdAY8Ym+KmC*7cdR-welFu50*Mc)70OW?jS0x`vx|4L9rht<)d0uHigy%XJNJ zML+rZdK;YkU#@GoS=aCkdCGPDHtG+1xvrI$>l#k2hOBGl<+@h>vR~K5>npc{GVnYf zyBql^<&)uiE6?HkD_;&Due=9-sPc>9hbzAxK3Vx~@HXZ5!)Gdg9Dc0w7vSy6_woZ$ zjL$;luZ5qgd=7k>@+I&U%Gbav%HIuNt^8_ukMdjL1Iq7(Z&Lm!{5{Hdz_%#h-QQla z7>CQ19}3^9d~@Ey_Ov|B~`s;CCpm!@s8d5qMqspW*i@AGHUK z!w;3e8vc;-8SqDxp8|hEc{lvG%HIutTKRv#cPRe?{BO#?1OJ!u$Kb=?F6+Sa@I938 z<)65V`LM6@!{B3;9|NDD{0w-e{2lPuDZd#0M&%!e=kQ669=E}(%I}BQl|K%5XVExt zp65Bg@;&_%O)(Bt_vul#GAzf0zSi1RCd zn)53k?%xV5#-Xl!0^D`W{8Qn%@B zABN}ar9T6Az0!yIB@yO>@&n=3J{jK%&-bKgs#uBjaD<{1-{ze+-R-t4ed#v#8<`cZKA0qOJMb>(Nn ztC!38jhz33(m%xcuaJH-=U09Y=l_t5{~71MlDy*R@eI7CeAodv?;n=&2f{1LkAl~g z&x2=MWu6uAs`B&T4ds`?^N+|pH^OVm?|{3jWc&}{73ELD>&pKD&ps;iwD>m`!t;po z*TWmikB8@1%RI~AHRbPsyZ?~!?}JyAUk9%%-v-aFk$LWiSCu~jZz%sOJpY)?v-da} zhnn)k;O<%(e>A+Jd?~!Hd@Ve?PUg7?URC}vctiP@;raD4&wcQk^2g!s<1+pQct!c% zucC3ND?c2b-5~QE3$H3)25%_uf#;u)c`k<6lwS{bH_G_i;T7c%!t2VPglC_Wd0v87 zmG6HbjYC8EWO!badD`JMd(I8GjYLqWp94y7D?a zyH)1-1-z>KS$ISFZWCx6@-N6dhrnyfr^DSBW&C1zMfoatUHN8s_9dC;Bk-#7&%qnY zzYWj7Eb}}HuPJ{H?zYMJJrAaFs3_0ib>*|**=;h)InAGs@DSJ#vu2(K$|g*TKhfV;2C{+|QSl%EgJm0t<3DE}&m|XZ@>?C z^tczEeLWAr{s_FH{8@NS`N)Z=56UONvv0`!Q{WZl3*j~89h_hJM$Uha%>O~ouly#? zul%c=U-@><|4o_y51e25%bZ{NxYuHQlphJtz9sXw!z;?)2Cpga=lsgw&-v>z|Bdj9 z@;l)*Y{veOu;#30_e?<}lO^<&)qIJbf1k|%6L>}WQ}CMdVMk#8D?bRH-7oV`fmf6-f^UV7b@Zsfw<&)oe7o{1;X9Py z3~zaW`osCZ0dG_OFno#fKf?Q!k9-}C!&c=7!?!7)3g52$WcUu{E8#8Qm;K)iZ&Q91 ze2MbU!~2!r3*V~zQTR6H&%w7V-}Ch}4m*@jgtt5>`#%TXrhF-UiSl*ue&z3lZ&iLB ze4Fyy;MrN&*0mX&xUVTz7)Pg`ML0xAIbh-3~y6@1AK|{ zJK_Dxe+=KM{15PL%H3o--tEc{g1aA6Kd*K4XoJ_3p9IhUOU9oAZz$gguWpy|SHQEM zNdFAHuKXMD%0n{#VYvIL^k?8T<-?DpamXK*@e|+;;n~lnuY}i?Z-!TX zA>*%tyGNvd4qj9KZFv5ujDHl~Q2rde`b!zV=NoApvd5%Pgx8hNfmePdl` zYs%jX&!3R-*TEagZ-ZC=TgHDMo;9TZ8eUia61?(j8Gpc0G!E`b=|{qA%ICrJ-^lp4 z!yC#6;nm;D_z%Ie-%0;0ysrFP@XGIH{3CGp2kATDHRXG>V*dY+jGqW^C_frreM-ik z0neV6-UF{IzXV=+M#kR=cYliNAA@kqQ`ISGx`IY~b^DE!G4Rzo-ng1|& zMfuV2n)0RahVr$X|1UECMevI9Yv48IUxYW5e;1xTFY`YJuPFZuyrz85DKriZzjbAIKcrqVdnlphLj zD4z+>UX=Myg;$iX=KRXv!}*n8!}r5^;ZD{q5W_L1=?!QH;n&w@VX-%%X8{2S`5{UQ<2|o{yFBZ-zINuYy;{$@mN5*{h^~6kb<; zE4*@`jQLhvSu>2G0+c@!jy6@(bba z5E=gwct!bt!t2WKfoHFld43A7Dt{W@P(Ex9>cgQj&vz5?D* zejYqOT;{n9UQ_-_xI03|e+6Dq{v&u@`ETLb>tvpP!mG;nKL+bX`5WN*>t&uCUQ_;7 zxSJ&7`{5Pkm%;1GYw+w1GSA)cs`BmdhVuV`=aXd~cPt%mP5F4ZJ5t8C!7Iua!t2T_ z@a&B;&n9?P`Br#C`7QALD4C}Yufh5E$DeZ^<$r`{t(1r3haX4dP*FY}UQ^x*Zzw+z zp1n!tU%~m6_j7*b@8|r=Z{+-KGXI^NU-=I?zw+O3e&sK5{wXs5nBy@%$|u2V%1?kd zlrM*8Q)T}3oL~7C&aeFAoL~9voPV0k|9#G{yutaEzsUKO?|TA`LpELJKLTD+ek{DE z{0w+Q`MI2bhRpw7&aeDh&aeE-oL~8UoPVaw|2XGY{#VYge4m`gp`rW;cs5JsKMr0| z{uX#m`FhT;{1VPTTju`+=U09w=U4tC&ab?9Td(+gYc@yb|2OAXKF)`Q&$lQq%1+@8 z<@4d$(K7$p@CrP0^wuey7D{W4dp+8yJP$}{*i@$o%=OBQ~n}6SH4d> z9dAYX;qa>RW8gLAr^D;Y*TEagt8jO$?ElB$nes2ebLHQISCsz>URC})yrz8gJQ|0( z@`><<^4V~Aob3N;@J#t?c&_~2@QU)Q;Z^0g!fVR!h1Zoo3U4Ui0e8pC{_lPwjYFpV zP$g(F8lvJc&7Y%c&_|*ct!bx@T&4B;Wgzi!Rv7U=iTravw+6I&82>_ zPlD&lPk>jIFNfEaujl;jGXECNul(bjU-|8vU-^Taf1b?$Ba z3a=|a8SYM!`B!p&<(oOb@~b$%^3QYrg);xWoL~7bIluD1aDL^Z7h(P{lKEc?&y^ny zuPQ$SURU13`A?SlFX8;kZ{+;S@8bN*w{!kC%luDqe&xeYrsJ(DKNwzDJ{|5B%lxOn zbLFc!zw(PXzw&E2|0y#6ZJb~EgYdQRy~C<;?rHd-^3iX`@hYDTufdlf&&lu|@UigK z@a$CT=h|Vk;Zn|X8u<#u-voC{$m{TX;dQwGvs!pO!SPEe{tEcZoF9G|e8OTnt_FM= z{AhT7I^`J$UkUB&0{mJZ6#@n^wvcpLijE_gqDZ}_$FDm;hZ4X?vn;19za zD*gp{R-yiIe9KbIH#p~SgI87jVt5Vi(}u@-_zpPNx69#KC+(NxZ-w{6IsO68ui~HL z{3?Fb>6lk5DgSizXCk};p8!7&URCjLh1XU5AiSaCKMc=S(SAAqt?(Rv2=;p){4Dss z@F(H@D*oT_D^&bJXVCH1RQz=KH&px*_=E5f*zdXU?QkCdEpXRG$HmV(H^M9MHsrY* zUW4;GdWiGGdA|J--hl6qJfoJ;as36(^>!lMbyI)1P96(i0_Qx-;Z-=#w|;m7&h_DP zc*|l55dPquhSmO^SqCD{<`1# zdha9OQjD9uuKPaTi+FwA_$;`+{`|C%=RkA4_eI|K_tzn>7H{bJ$MEp4b8icdABKGS zn)fVnefXY4{Cm8&`1qdw&LLTxyCe~RMsRz*{reK}*CqUJ@5O%gb?m>Fi2tScO!Sa` zc*^^j;rqD36caXb9jl(xXf9!n+#`!!& zydJlS$iL;7JY>Ff813M7-pBa(8uIUf{Z0$<_+iMG1qpw9!uyK+!^gXR)&C1a{622W zAvtA#4Sl%*e$?*dXO1J^FL>m>466nPHw*zRn-sv5S7oD-Jqr-J|4|K0t zw_&h*pkr`-$Eu#b-tG-PqN}fCO;6v-&Yq60!M=eF9i1CDxmA7Z`+K?vySrLvPMa|! z9@MdVUGKV%&Vhl>3p%=c2L~>2s|PyQcXxDcT)+MT-(<*79X@hUgs$pcGSIiGV@-E& zNBc=rJ37zbG}U*vXX9W;c{i_ly(bOyZS3FR1EwUmObuIlH?D8*UDP|Yg}?LVG~PDv z|7n}Q`B2dhpVPLR?eAGc+vazz>E5uUd!W5IfN;Oh)RtyG-KLpM^*-D|lJluv>}p%8 z_r6`CCnBThW3i>or?)h-6}@jCa<+!HvfFmnPL9ZsoT85^r|6~KhW(ZEYDm`Rc}r~F zd0X_>v|ZdYASOjRAeFz&klIC9HU8$VVUn2q*h;4^v32LWZjQHUPJL?*dOE=GqNp)b z{awwv``68Oo4W`4nm?`Y+_ZS{>E*^Ea)!T^Rx`5vi6YA%MeUfvwIhB*$jI$e{Y{P{ zx25$O?v!iqSXA6e*l7GllXTmA6HGT;v>e}IxObZgj@+`#cbV@0ZGvMrOD>{Qx95u< z;?(#qW48(Qx#Own)@Y`GQ^Ot5Eyt5gi+6->!Dy1qh@bM-+d=hoJ=0vRn<5ZC&N^n3`cKTU+gt;nx-a(7{$rv zkKLxd7#2)C!}aI2jGa$tV>k%klkDaWc`Nuow-M z!YCCd%kdmkoJ=$oC(H3&#%`JJPh_YoCI=NK!?fNk$CFTTGSRet3{!D3OvTAC6(_?q z>kaSp&dVlxr?&$&(I`&V6N5#?$%IpJGEBwEFp87)#NeVhnRpZ@>xmJg;$*_9I2lH9 zGLGV8or;rj6er_&k%klkDaWc`Nuow-M!YCCd%kdmkoJ=$oC(H3&QgJfTp{^LE;$)cCo8@>CDo!Sv z){kK-PKK#C8K&Z7n2M8OT55)=I2oqmWSCZtVH79piNT`cWWuR98K&Z77{$qYVsKHM zOgxH{^~8u#aWdgloD8El8Aoxlo)}^jClin2WSxqWaTF)xC{D&voQ#L!G~2COH?ZoA zwd+<7hCfu$8{$SoaWWc;lhII|j8bv39Ey|W_zpv1F~Oly7^UK5Ii7=xlZmF{WI4V| zDo!Rk)D@#toD9=?vm8%C#mPj|`Y}w!$uJcs!&ICMQ*km(OU*D9C&N^n4AaUnjN)WH zF<4ZbOgI%M!&ICMqc~Yl3@(b3iAQm=o)|GIP9~g+lVKDm<0wwn6GM#RWa3ertW$9^ zj^bn-#mP8|lkrfT=0uB=(NHUlhT>#26epupoGgdpWI4XWP*_ZGs1!!2I9ZP8pyFhr zsW@4V?~;m>i4JweC>1BewB9VolTdLo(X@UHQ*km(#mO)gC&N^n4AW9GOvTAC6(_^A zatxz5Sx*cW6(X|8XR9XyEWid?k%rMn6!>DK0 z6Fa4MtEQNEDny2EL&#Wi*i+X0_sSX)NJu{9~X+4n#^~}U$jTuKh zGmd&@9QDjN>X~sYNaLty#!=6VV|5wldS*AIMh^ANG(bHwj(TRC>zUn<8f&g+rUlnC zyCF4vsAr}D>X~t_XJ!M}GrJ)*;#|*63$AB&1L~RC!1c^*;Cf~@a6OY7ruq+D*w0>h z4V6WH^2%#i`9?#HGa6R6(NOq|h9zkez=%eFtM7#Pdv*)a0ghY&m|$Xd#(sTB?@g2T#S)L{lv@OeNHE zd`zhDnP{p$mg60y`d|18mGgigCwx7uK8fJ%y4NKQ(nCeDDaWWbvjL}e>j8bv3 z9Qh1san|C87yD>w5gk83Do%En@k68+X(pPct>t(JY4X_U_%34~#4Ao>_-M6BLdD5) zJU2~O6HTkia{N@%oHWr?oD5TOvK&7#2 zOm(B7I2jES#%L%`MyWVi4#mlG{P3ta+35HIQgO1;@k6BIWTI)>T8?*+CXbDd?~;m> ziKgOYIlfE!)zL)LbhR8GD*7$TMAMwK96uZ?P9~au=`l>j$uJcs%Za%b?+J>N$%0@0 ztS8Pgij$3};$%HB1o#!w##3=Jj^boJHNO&P8^y`yq2gp5#mRbNBA_^#_%KuDXRNq5 z84VNCXedrb!`U_(ij&bWVT^|2WR!}Nt(J zY4X_U_%5k9nP@6bmgBpm;$)&}x>}A86%{8FO>@$6{BUSxnrJFchN(Cirs8BdG1uZf zL2)u!P@JqM&N7OVji=&dJuw6*PBxy3lW`O$>#6ybINK;rHV+ji<0wwn6B7Z&$;5}5 zDnG`+#mQ)xkVZpsG8)dd(NLU>h6!Ud6epupoGgdpWI29#RGe&d`~ayq+35HoQgJfT zG;J-%J4lnqM#pza#mPidak3oWB^4(VP1DtKe5j~6nP{4mmg9#*E7L?%aWYKB$uJcs z%Za%b?+J>N$%5i!J#m&%oNPQ5C+mqJKykA1RGf^XI9X54uf*9#ak6=+I2lKAvYwa- zC{89m%vAMvKdw%e!<4if>XYSg#w~{mWjRb6%b`YDrXm&bP^BWCI8drnk@&=+Ql*N- zCk~csm5rxq9PvayX*xyX6Z@rtW#g%0MLe-z{Gm{OqQy@Tn#MK{Ew_j#PA^SY8z223 zgWoSLTN{tRbeVoq?XvMyyds|HXY>;QzCWm6HWB~b&-4iYJ9MN)>YU+13y~J7(cnKJ z+MQDwv#C(WA{&x3FEs^F$|9+#me~y`W|0l4>49?QTMW6fOmVfS_KmCgvO4sqzSQ=q z_@iHH`|MD7rtKpCbhom1N#BO{aHT4>@9Dc}J7XtpXY8Ww%$>BIxr?^5cG7lMvMr5Q zye)4_jU~SrOpn#&uw9mBPbX(f*oM>C#mg+O*j<@A)skY^lO8S6zGIJ@r4~Vrc zH|}EJ@s6Wob9OP>{=+mo*>}1%t(ipYa$~gT;aXC(V$H6HY}2vo zExKR)^)0nuIvw%-^0ri4e!DojU%XkKY>PMEqiwM**%t40McZOqvTev6sXpa6CaRC$ zPU8`8%iEIs4gHE#f%5z&szBMVMB8vY>9*9bcw64K^FGJcaoOoq6)1b1Y8|@0lh)L? zMC)>6PtU+q{~w+==XP}sxg?#~)LuNv@$;%nH7l+bmuhCVHTPCrzAn|wY(uj!f{A9a zZ9|%+IvK`XrEE4c{pTU^&HT3h;x#~Vamk^tLBeI8Qd_1c+ssIAnVH-&E4gKMa?70L z7C&!N-S)*jvMK!X5FLfEC3>u3OY~U7mgupDEzu(iTYSGeIu@Kh_mue^^G`j|U(J** zZOY$^3ygNTjuYQ@>fBQn&GS)1wuIH}>7-NN(lLJ_vMoIEbk}jx;?vsaF77yO!Gbg9 zFY8z~w|(*aVh=s*R<7z;wP9np)T!%S**7ql=O-;*)IP6cYU|Wie}o$cH%RH|?&=)u zbgTX4RX232O_VS6qNBK6q264yr0bu$)%^qOdIwkQh&Ai`dMP4|K-Y%8jZ^{ngd=I{M@(G`OK|NcGLH!m)U%-6A= zJv{e6IX4@?*J}^x|H0*x`A1h=-+XufAGcpNJoi62w+xVlpPK*hb)Q+L_-}@`9~_>C zO@nBEc=)OLk8XdW-}JXvUg_igUpqVx!Pf$~|GNcsj<55KADzEFgWJph$L;SPp8KDi zyBn|v4tSKe;#+P%z6kOUe|ctCTtlAQ*GJ_3C+F(8u>6|vQ}Z7^e&_g2uMFw`q>*_D zo`eH^6`FGYc|ZL19e(@EL)zzPpQC+-_PYOIx7mMFgmS(L+E>t?kCXSWkADl=wHV8eph-c#-!+9@mRZCj<4a1YQ~ThCvwR_*gqd1#TNL+!J|kL5qyj^TR$&CvaC!F9~H`1^-~R4wZ9hauSNUma`)x= zyrAO!xBo`YpZGkmn1>^UwVChknC;L)!E8{Kx-awtvL8E%wCw&w4xkPtM;* zVCVY}LH?h|{eQ)&=Ju1&eiGVmr!?jK^zN0^exm;}+)oDX q4%hXfKJmGyNc#7(ZPfmr;t6iZgZIlc#(xuQKYw@9g{p!2(fuy~nS7rB diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/Makefile b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/Makefile new file mode 100644 index 0000000000..5c91b2722d --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/Makefile @@ -0,0 +1,27 @@ +C=gcc +CFLAGS=-W -Wall -mavx2 +LDFLAGS= +EXEC=bnProc_gen_avx2 +SRC= $(wildcard *.c) +OBJ= $(SRC:.c=.o) + +all: $(EXEC) + +bnProc_gen_avx2: $(OBJ) + @$(CC) -o $@ $^ $(LDFLAGS) -O2 + + + +%.o: %.c + @$(CC) -o $@ -c $< $(CFLAGS) -I ${OPENAIR_HOME}/openair1 -g -std=c99 + +.PHONY: clean mrproper + +clean: + @rm -rf *.o + +mrproper: clean + @rm -rf $(EXEC) + +zip: + @tar -zcvf sauvegarde.tar.gz main.c bnProcPc_gen_BG1_avx2.c bnProcPc_gen_BG2_avx2.c bnProc_gen_BG1_avx2.c bnProc_gen_BG2_avx2.c Makefile diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProcPc_gen_BG1_avx2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProcPc_gen_BG1_avx2.c new file mode 100644 index 0000000000..5fe08998d8 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProcPc_gen_BG1_avx2.c @@ -0,0 +1,1777 @@ + + +#include +#include +#include "../../nrLDPCdecoder_defs.h" +#include "../../nrLDPC_types.h" +#include "../../nrLDPC_bnProc.h" +#include "../../nrLDPC_cnProc.h" +#include "../../nrLDPC_init.h" + +void nrLDPC_bnProcPc_BG1_generator_AVX2(uint16_t Z,int R) +{ + const char *ratestr[3]={"13","23","89"}; + + if (R<0 || R>2) {printf("Illegal R %d\n",R); abort();} + + + // system("mkdir -p ../ldpc_gen_files"); + + char fname[50]; + sprintf(fname,"../ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z%d_R%s_AVX2.c",Z,ratestr[R]); + FILE *fd=fopen(fname,"w"); + if (fd == NULL) {printf("Cannot create \n");abort();} + + fprintf(fd,"#include \n"); + fprintf(fd,"#include \n"); + + fprintf(fd,"void nrLDPC_bnProcPc_BG1_Z%d_R%s_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) {\n",Z, ratestr[R]); + const uint8_t* lut_numBnInBnGroups; + const uint32_t* lut_startAddrBnGroups; + const uint16_t* lut_startAddrBnGroupsLlr; + if (R==0) { + + + lut_numBnInBnGroups = lut_numBnInBnGroups_BG1_R13; + lut_startAddrBnGroups = lut_startAddrBnGroups_BG1_R13; + lut_startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG1_R13; + + } + else if (R==1){ + + lut_numBnInBnGroups = lut_numBnInBnGroups_BG1_R23; + lut_startAddrBnGroups = lut_startAddrBnGroups_BG1_R23; + lut_startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG1_R23; + } + else if (R==2) { + + lut_numBnInBnGroups = lut_numBnInBnGroups_BG1_R89; + lut_startAddrBnGroups = lut_startAddrBnGroups_BG1_R89; + lut_startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG1_R89; + } + else { printf("aborting, illegal R %d\n",R); fclose(fd);abort();} +/* + const uint8_t* lut_numBnInBnGroups; + const uint32_t* lut_startAddrBnGroups; + const uint16_t* lut_startAddrBnGroupsLlr; +*/ + // Number of BNs in Groups + uint32_t M; + //uint32_t M32rem; + // uint32_t i,j; + uint32_t k; + // Offset to each bit within a group in terms of 32 Byte + uint32_t cnOffsetInGroup; + uint8_t idxBnGroup = 0; + + fprintf(fd," __m256i ymm0, ymm1, ymmRes0, ymmRes1; \n"); + + + fprintf(fd," __m128i* p_bnProcBuf; \n"); + fprintf(fd," __m256i* p_bnProcBufRes; \n"); + fprintf(fd," __m128i* p_llrProcBuf;\n"); + fprintf(fd," __m256i* p_llrProcBuf256; \n"); + fprintf(fd," __m256i* p_llrRes; \n"); + + + + + + + // ===================================================================== + // Process group with 1 CN + // Already done in bnProcBufPc + + // ===================================================================== + +fprintf(fd, "// Process group with 1 CNs \n"); + + // if (lut_numBnInBnGroups[1] > 0) + // { + // If elements in group move to next address +// idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[0]*Z + 31)>>5; + + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrProcBuf256 = (__m256i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + + //for (i=0,j=0;i 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[1]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[1]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + + // Loop over CNs + for (k=1; k<2; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + } + + // ===================================================================== + // Process group with 3 CNs + + +fprintf(fd, "// Process group with 3 CNs \n"); + + // Process group with 3 CNs + + if (lut_numBnInBnGroups[2] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[2]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[2]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<3; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + + // ===================================================================== + // Process group with 4 CNs + +fprintf(fd, "// Process group with 4 CNs \n"); + + // Process group with 4 CNs + + if (lut_numBnInBnGroups[3] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[3]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[3]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<4; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 5 CNs + +fprintf(fd, "// Process group with 5 CNs \n"); + + // Process group with 5 CNs + + if (lut_numBnInBnGroups[4] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[4]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[4]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<5; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + + // ===================================================================== + // Process group with 6 CNs + +fprintf(fd, "// Process group with 6 CNs \n"); + + // Process group with 6 CNs + + if (lut_numBnInBnGroups[5] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[5]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[5]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<6; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 7 CNs + +fprintf(fd, "// Process group with 7 CNs \n"); + + // Process group with 7 CNs + + if (lut_numBnInBnGroups[6] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[6]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[6]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<7; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + //fprintf(fd," (__m256i*) &llrRes[%d + i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n",lut_startAddrBnGroupsLlr[idxBnGroup]>>5 ); + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 8 CNs + +fprintf(fd, "// Process group with 8 CNs \n"); + + // Process group with 8 CNs + + if (lut_numBnInBnGroups[7] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[7]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[7]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<8; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + //fprintf(fd," (__m256i*) &llrRes[%d + i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n",lut_startAddrBnGroupsLlr[idxBnGroup]>>5 ); + + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + // ===================================================================== + // Process group with 9 CNs + +fprintf(fd, "// Process group with 9 CNs \n"); + + // Process group with 9 CNs + + if (lut_numBnInBnGroups[8] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[8]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[8]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<9; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + //fprintf(fd," (__m256i*) &llrRes[%d + i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n",lut_startAddrBnGroupsLlr[idxBnGroup]>>5 ); + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 10 CNs + +fprintf(fd, "// Process group with 10 CNs \n"); + + // Process group with 10 CNs + + if (lut_numBnInBnGroups[9] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[9]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[9]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<10; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + + // ===================================================================== + +fprintf(fd, "// Process group with 11 CNs \n"); + + + + // Process group with 2 CNs + + if (lut_numBnInBnGroups[10] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[10]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[10]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<11; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + // ===================================================================== + // Process group with 2 CNs + + +fprintf(fd, "// Process group with 12 CNs \n"); + + // Process group with 2 CNs + + if (lut_numBnInBnGroups[11] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[11]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[11]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<12; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + // ===================================================================== + // Process group with 13 CNs + + +fprintf(fd, "// Process group with 13 CNs \n"); + + // Process group with 3 CNs + + if (lut_numBnInBnGroups[12] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[12]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[12]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<13; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + + // ===================================================================== + // Process group with 4 CNs + +fprintf(fd, "// Process group with 14 CNs \n"); + + // Process group with 4 CNs + + if (lut_numBnInBnGroups[13] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[13]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[13]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<14; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 5 CNs + +fprintf(fd, "// Process group with 15 CNs \n"); + + // Process group with 5 CNs + + if (lut_numBnInBnGroups[14] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[14]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[14]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<15; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + + // ===================================================================== + // Process group with 6 CNs + +fprintf(fd, "// Process group with 16 CNs \n"); + + // Process group with 6 CNs + + if (lut_numBnInBnGroups[15] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[15]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[15]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<16; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 17 CNs + +fprintf(fd, "// Process group with 17 CNs \n"); + + // Process group with 17 CNs + + if (lut_numBnInBnGroups[16] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[16]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[16]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<17; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 18 CNs + +fprintf(fd, "// Process group with 18 CNs \n"); + + // Process group with 8 CNs + + if (lut_numBnInBnGroups[17] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[17]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[17]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<18; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + // ===================================================================== + // Process group with 9 CNs + +fprintf(fd, "// Process group with 19 CNs \n"); + + // Process group with 9 CNs + + if (lut_numBnInBnGroups[18] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[18]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[18]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<19; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 20 CNs + +fprintf(fd, "// Process group with 20 CNs \n"); + + // Process group with 20 CNs + + if (lut_numBnInBnGroups[19] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[19]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[19]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<20; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + + + + // ===================================================================== + +fprintf(fd, "// Process group with 21 CNs \n"); + + + + // Process group with 2 CNs + + if (lut_numBnInBnGroups[20] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[20]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[20]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<21; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + // ===================================================================== + // Process group with 2 CNs + + +fprintf(fd, "// Process group with 22 CNs \n"); + + // Process group with 2 CNs + + if (lut_numBnInBnGroups[21] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[21]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[21]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<22; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + // ===================================================================== + // Process group with 13 CNs + + +fprintf(fd, "// Process group with <23 CNs \n"); + + // Process group with 3 CNs + + if (lut_numBnInBnGroups[22] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[22]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[22]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<23; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + + // ===================================================================== + // Process group with 4 CNs + +fprintf(fd, "// Process group with 24 CNs \n"); + + // Process group with 4 CNs + + if (lut_numBnInBnGroups[23] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[23]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[23]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<24; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 5 CNs + +fprintf(fd, "// Process group with 25 CNs \n"); + + // Process group with 5 CNs + + if (lut_numBnInBnGroups[24] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[24]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[24]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<25; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + + // ===================================================================== + // Process group with 6 CNs + +fprintf(fd, "// Process group with 26 CNs \n"); + + // Process group with 6 CNs + + if (lut_numBnInBnGroups[25] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[25]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[25]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<26; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 17 CNs + +fprintf(fd, "// Process group with 27 CNs \n"); + + // Process group with 17 CNs + + if (lut_numBnInBnGroups[26] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[26]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[26]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<27; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 18 CNs + +fprintf(fd, "// Process group with 28 CNs \n"); + + // Process group with 8 CNs + + if (lut_numBnInBnGroups[27] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[27]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[27]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<28; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + // ===================================================================== + // Process group with 9 CNs + +fprintf(fd, "// Process group with 29 CNs \n"); + + // Process group with 9 CNs + + if (lut_numBnInBnGroups[28] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[28]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[28]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<29; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 20 CNs + +fprintf(fd, "// Process group with 30 CNs \n"); + + // Process group with 20 CNs + + if (lut_numBnInBnGroups[29] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[29]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[29]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<30; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + fprintf(fd,"}\n"); + fclose(fd); +}//end of the function nrLDPC_bnProc_BG1 + + + + diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProcPc_gen_BG2_avx2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProcPc_gen_BG2_avx2.c new file mode 100644 index 0000000000..68783ae0da --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProcPc_gen_BG2_avx2.c @@ -0,0 +1,1773 @@ + + +#include +#include +#include "../../nrLDPCdecoder_defs.h" +#include "../../nrLDPC_types.h" +#include "../../nrLDPC_bnProc.h" +#include "../../nrLDPC_cnProc.h" +#include "../../nrLDPC_init.h" + +void nrLDPC_bnProcPc_BG2_generator_AVX2(uint16_t Z,int R) +{ + const char *ratestr[3]={"15","13","23"}; + + if (R<0 || R>2) {printf("Illegal R %d\n",R); abort();} + + + // system("mkdir -p ../ldpc_gen_files"); + + char fname[50]; + sprintf(fname,"../ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z%d_R%s_AVX2.c",Z,ratestr[R]); + FILE *fd=fopen(fname,"w"); + if (fd == NULL) {printf("Cannot create \n");abort();} + + fprintf(fd,"#include \n"); + fprintf(fd,"#include \n"); + + //fprintf(fd,"void nrLDPC_bnProc_BG1_Z%d_%s_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) {\n",Z,ratestr[R]); + + fprintf(fd,"void nrLDPC_bnProcPc_BG2_Z%d_R%s_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) {\n",Z,ratestr[R]); + const uint8_t* lut_numBnInBnGroups; + const uint32_t* lut_startAddrBnGroups; + const uint16_t* lut_startAddrBnGroupsLlr; + //BG1 + if (R==0) { + lut_numBnInBnGroups = lut_numBnInBnGroups_BG2_R15; + lut_startAddrBnGroups = lut_startAddrBnGroups_BG2_R15; + lut_startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG2_R15; + } + else if (R==1) { + lut_numBnInBnGroups = lut_numBnInBnGroups_BG2_R13; + lut_startAddrBnGroups = lut_startAddrBnGroups_BG2_R13; + lut_startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG2_R13; + } + else if (R==2) { + lut_numBnInBnGroups = lut_numBnInBnGroups_BG2_R23; + lut_startAddrBnGroups = lut_startAddrBnGroups_BG2_R23; + lut_startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG2_R23; + } + + + else { printf("aborting, illegal R %d\n",R); fclose(fd);abort();} + + // Number of BNs in Groups + uint32_t M; + //uint32_t M32rem; + // uint32_t i,j; + uint32_t k; + // Offset to each bit within a group in terms of 32 Byte + uint32_t cnOffsetInGroup; + uint8_t idxBnGroup = 0; + + fprintf(fd," __m256i ymm0, ymm1, ymmRes0, ymmRes1; \n"); + + + fprintf(fd," __m128i* p_bnProcBuf; \n"); + fprintf(fd," __m256i* p_bnProcBufRes; \n"); + fprintf(fd," __m128i* p_llrProcBuf;\n"); + fprintf(fd," __m256i* p_llrProcBuf256; \n"); + fprintf(fd," __m256i* p_llrRes; \n"); + + + + + + + // ===================================================================== + // Process group with 1 CN + // Already done in bnProcBufPc + + // ===================================================================== + +fprintf(fd, "// Process group with 1 CNs \n"); + + // if (lut_numBnInBnGroups[1] > 0) + // { + // If elements in group move to next address +// idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[0]*Z + 31)>>5; + + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrProcBuf256 = (__m256i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + + //for (i=0,j=0;i 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[1]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[1]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + + // Loop over CNs + for (k=1; k<2; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + } + + // ===================================================================== + // Process group with 3 CNs + + +fprintf(fd, "// Process group with 3 CNs \n"); + + // Process group with 3 CNs + + if (lut_numBnInBnGroups[2] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[2]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[2]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<3; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + + // ===================================================================== + // Process group with 4 CNs + +fprintf(fd, "// Process group with 4 CNs \n"); + + // Process group with 4 CNs + + if (lut_numBnInBnGroups[3] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[3]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[3]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<4; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 5 CNs + +fprintf(fd, "// Process group with 5 CNs \n"); + + // Process group with 5 CNs + + if (lut_numBnInBnGroups[4] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[4]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[4]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<5; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + + // ===================================================================== + // Process group with 6 CNs + +fprintf(fd, "// Process group with 6 CNs \n"); + + // Process group with 6 CNs + + if (lut_numBnInBnGroups[5] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[5]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[5]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<6; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 7 CNs + +fprintf(fd, "// Process group with 7 CNs \n"); + + // Process group with 7 CNs + + if (lut_numBnInBnGroups[6] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[6]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[6]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<7; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + //fprintf(fd," (__m256i*) &llrRes[%d + i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n",lut_startAddrBnGroupsLlr[idxBnGroup]>>5 ); + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 8 CNs + +fprintf(fd, "// Process group with 8 CNs \n"); + + // Process group with 8 CNs + + if (lut_numBnInBnGroups[7] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[7]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[7]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<8; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + //fprintf(fd," (__m256i*) &llrRes[%d + i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n",lut_startAddrBnGroupsLlr[idxBnGroup]>>5 ); + + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + // ===================================================================== + // Process group with 9 CNs + +fprintf(fd, "// Process group with 9 CNs \n"); + + // Process group with 9 CNs + + if (lut_numBnInBnGroups[8] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[8]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[8]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<9; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + //fprintf(fd," (__m256i*) &llrRes[%d + i] = _mm256_permute4x64_epi64(ymm0, 0xD8);\n",lut_startAddrBnGroupsLlr[idxBnGroup]>>5 ); + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 10 CNs + +fprintf(fd, "// Process group with 10 CNs \n"); + + // Process group with 10 CNs + + if (lut_numBnInBnGroups[9] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[9]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[9]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<10; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + + // ===================================================================== + +fprintf(fd, "// Process group with 11 CNs \n"); + + + + // Process group with 2 CNs + + if (lut_numBnInBnGroups[10] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[10]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[10]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<11; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + // ===================================================================== + // Process group with 2 CNs + + +fprintf(fd, "// Process group with 12 CNs \n"); + + // Process group with 2 CNs + + if (lut_numBnInBnGroups[11] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[11]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[11]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<12; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + // ===================================================================== + // Process group with 13 CNs + + +fprintf(fd, "// Process group with 13 CNs \n"); + + // Process group with 3 CNs + + if (lut_numBnInBnGroups[12] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[12]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[12]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<13; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + + // ===================================================================== + // Process group with 4 CNs + +fprintf(fd, "// Process group with 14 CNs \n"); + + // Process group with 4 CNs + + if (lut_numBnInBnGroups[13] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[13]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[13]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<14; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 5 CNs + +fprintf(fd, "// Process group with 15 CNs \n"); + + // Process group with 5 CNs + + if (lut_numBnInBnGroups[14] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[14]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[14]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<15; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + + // ===================================================================== + // Process group with 6 CNs + +fprintf(fd, "// Process group with 16 CNs \n"); + + // Process group with 6 CNs + + if (lut_numBnInBnGroups[15] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[15]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[15]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<16; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 17 CNs + +fprintf(fd, "// Process group with 17 CNs \n"); + + // Process group with 17 CNs + + if (lut_numBnInBnGroups[16] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[16]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[16]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<17; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 18 CNs + +fprintf(fd, "// Process group with 18 CNs \n"); + + // Process group with 8 CNs + + if (lut_numBnInBnGroups[17] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[17]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[17]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<18; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + // ===================================================================== + // Process group with 9 CNs + +fprintf(fd, "// Process group with 19 CNs \n"); + + // Process group with 9 CNs + + if (lut_numBnInBnGroups[18] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[18]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[18]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<19; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 20 CNs + +fprintf(fd, "// Process group with 20 CNs \n"); + + // Process group with 20 CNs + + if (lut_numBnInBnGroups[19] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[19]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[19]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<20; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + + + + // ===================================================================== + +fprintf(fd, "// Process group with 21 CNs \n"); + + + + // Process group with 2 CNs + + if (lut_numBnInBnGroups[20] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[20]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[20]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<21; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + // ===================================================================== + // Process group with 2 CNs + + +fprintf(fd, "// Process group with 22 CNs \n"); + + // Process group with 2 CNs + + if (lut_numBnInBnGroups[21] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[21]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[21]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<22; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + // ===================================================================== + // Process group with 13 CNs + + +fprintf(fd, "// Process group with <23 CNs \n"); + + // Process group with 3 CNs + + if (lut_numBnInBnGroups[22] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[22]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[22]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<23; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + + // ===================================================================== + // Process group with 4 CNs + +fprintf(fd, "// Process group with 24 CNs \n"); + + // Process group with 4 CNs + + if (lut_numBnInBnGroups[23] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[23]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[23]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<24; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 5 CNs + +fprintf(fd, "// Process group with 25 CNs \n"); + + // Process group with 5 CNs + + if (lut_numBnInBnGroups[24] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[24]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[24]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<25; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + + // ===================================================================== + // Process group with 6 CNs + +fprintf(fd, "// Process group with 26 CNs \n"); + + // Process group with 6 CNs + + if (lut_numBnInBnGroups[25] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[25]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[25]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<26; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 17 CNs + +fprintf(fd, "// Process group with 27 CNs \n"); + + // Process group with 17 CNs + + if (lut_numBnInBnGroups[26] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[26]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[26]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<27; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 18 CNs + +fprintf(fd, "// Process group with 28 CNs \n"); + + // Process group with 8 CNs + + if (lut_numBnInBnGroups[27] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[27]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[27]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<28; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + // ===================================================================== + // Process group with 9 CNs + +fprintf(fd, "// Process group with 29 CNs \n"); + + // Process group with 9 CNs + + if (lut_numBnInBnGroups[28] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[28]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[28]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<29; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + + // ===================================================================== + // Process group with 20 CNs + +fprintf(fd, "// Process group with 30 CNs \n"); + + // Process group with 20 CNs + + if (lut_numBnInBnGroups[29] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[29]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[29]*NR_LDPC_ZMAX)>>4; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m128i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_llrProcBuf = (__m128i*) &llrProcBuf [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + // Loop over BNs + fprintf(fd," for (int i=0,j=0;i<%d;i++,j+=2) {\n",M); + // First 16 LLRs of first CN + fprintf(fd," ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]);\n"); + fprintf(fd," ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]);\n"); + + // Loop over CNs + for (k=1; k<30; k++) + { + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j]);\n", k*cnOffsetInGroup); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[%d + j +1]);\n", k*cnOffsetInGroup); + + fprintf(fd, " ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); \n"); + } + + // Add LLR from receiver input + fprintf(fd," ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]);\n"); + fprintf(fd," ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0);\n"); + + fprintf(fd," ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]);\n"); + fprintf(fd," ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1);\n"); + + // Pack results back to epi8 + fprintf(fd," ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1);\n"); + // ymm0 = [ymmRes1[255:128] ymmRes0[255:128] ymmRes1[127:0] ymmRes0[127:0]] + // p_llrRes = [ymmRes1[255:128] ymmRes1[127:0] ymmRes0[255:128] ymmRes0[127:0]] + fprintf(fd," *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8);\n"); + fprintf(fd," p_llrRes++;\n"); + fprintf(fd,"}\n"); + } + + fprintf(fd,"}\n"); + fclose(fd); +}//end of the function nrLDPC_bnProc_BG1 + + + + diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_BG1_avx2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_BG1_avx2.c new file mode 100644 index 0000000000..0fffb241af --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_BG1_avx2.c @@ -0,0 +1,1235 @@ + + +#include +#include +#include "../../nrLDPCdecoder_defs.h" +#include "../../nrLDPC_types.h" +#include "../../nrLDPC_bnProc.h" +#include "../../nrLDPC_cnProc.h" +#include "../../nrLDPC_init.h" + +void nrLDPC_bnProc_BG1_generator_AVX2(uint16_t Z,int R) +{ + const char *ratestr[3]={"13","23","89"}; + + if (R<0 || R>2) {printf("Illegal R %d\n",R); abort();} + + + // system("mkdir -p ../ldpc_gen_files"); + + char fname[50]; + sprintf(fname,"../ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z%d_R%s_AVX2.c",Z,ratestr[R]); + FILE *fd=fopen(fname,"w"); + if (fd == NULL) {printf("Cannot create \n");abort();} + + fprintf(fd,"#include \n"); + fprintf(fd,"#include \n"); + + + fprintf(fd,"void nrLDPC_bnProc_BG1_Z%d_R%s_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) {\n",Z, ratestr[R]); + const uint8_t* lut_numBnInBnGroups; + const uint32_t* lut_startAddrBnGroups; + const uint16_t* lut_startAddrBnGroupsLlr; + if (R==0) { + + + lut_numBnInBnGroups = lut_numBnInBnGroups_BG1_R13; + lut_startAddrBnGroups = lut_startAddrBnGroups_BG1_R13; + lut_startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG1_R13; + + } + else if (R==1){ + + lut_numBnInBnGroups = lut_numBnInBnGroups_BG1_R23; + lut_startAddrBnGroups = lut_startAddrBnGroups_BG1_R23; + lut_startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG1_R23; + } + else if (R==2) { + + lut_numBnInBnGroups = lut_numBnInBnGroups_BG1_R89; + lut_startAddrBnGroups = lut_startAddrBnGroups_BG1_R89; + lut_startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG1_R89; + } + else { printf("aborting, illegal R %d\n",R); fclose(fd);abort();} + + + uint32_t M; + //uint32_t M32rem; + // uint32_t i; + uint32_t k; + // Offset to each bit within a group in terms of 32 Byte + uint32_t cnOffsetInGroup; + uint8_t idxBnGroup = 0; + + + + fprintf(fd," __m256i* p_bnProcBuf; \n"); + fprintf(fd," __m256i* p_bnProcBufRes; \n"); + fprintf(fd," __m256i* p_llrRes; \n"); + fprintf(fd," __m256i* p_res; \n"); + + + +// ===================================================================== + // Process group with 1 CN + // Already done in bnProcBufPc + + // ===================================================================== + +fprintf(fd, "// Process group with 2 CNs \n"); + + if (lut_numBnInBnGroups[1] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[1]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[1]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<2; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + + + + } + + // ===================================================================== + + +fprintf(fd, "// Process group with 3 CNs \n"); + + + + if (lut_numBnInBnGroups[2] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[2]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[2]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + for (k=0; k<3; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + } + } + + + + // ===================================================================== + + +fprintf(fd, "// Process group with 4 CNs \n"); + + + + if (lut_numBnInBnGroups[3] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[3]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[3]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + for (k=0; k<4; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + } + } + + + // ===================================================================== + + + fprintf(fd, "// Process group with 5 CNs \n"); + + + + if (lut_numBnInBnGroups[4] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[4]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[4]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<5; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + + // ===================================================================== + + +fprintf(fd, "// Process group with 6 CNs \n"); + + // Process group with 6 CNs + + if (lut_numBnInBnGroups[5] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[5]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[5]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<6; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 7 CNs \n"); + + // Process group with 7 CNs + + if (lut_numBnInBnGroups[6] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[6]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[6]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<7; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 8 CNs \n"); + + // Process group with 8 CNs + + if (lut_numBnInBnGroups[7] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[7]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[7]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<8; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + // ===================================================================== + + +fprintf(fd, "// Process group with 9 CNs \n"); + + // Process group with 9 CNs + + if (lut_numBnInBnGroups[8] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[8]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[8]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<9; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + +fprintf(fd, "// Process group with 10 CNs \n"); + + // Process group with 10 CNs + + if (lut_numBnInBnGroups[9] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[9]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[9]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<10; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + + // ===================================================================== + +fprintf(fd, "// Process group with 11 CNs \n"); + + if (lut_numBnInBnGroups[10] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[10]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[10]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<11; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + // ===================================================================== + + + +fprintf(fd, "// Process group with 12 CNs \n"); + + + if (lut_numBnInBnGroups[11] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[11]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[11]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<12; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + // ===================================================================== + + + +fprintf(fd, "// Process group with 13 CNs \n"); + + + + if (lut_numBnInBnGroups[12] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[12]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[12]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<1; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + + // ===================================================================== + + +fprintf(fd, "// Process group with 14 CNs \n"); + + + + if (lut_numBnInBnGroups[13] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[13]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[13]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<14; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 15 CNs \n"); + + + + if (lut_numBnInBnGroups[14] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[14]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[14]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<15; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + + // ===================================================================== + + +fprintf(fd, "// Process group with 16 CNs \n"); + + + + if (lut_numBnInBnGroups[15] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[15]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[15]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<16; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + // Process group with 17 CNs + +fprintf(fd, "// Process group with 17 CNs \n"); + + // Process group with 17 CNs + + if (lut_numBnInBnGroups[16] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[16]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[16]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<17; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 18 CNs \n"); + + // Process group with 8 CNs + + if (lut_numBnInBnGroups[17] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[17]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[17]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<18; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + // ===================================================================== + + +fprintf(fd, "// Process group with 19 CNs \n"); + + + + if (lut_numBnInBnGroups[18] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[18]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[18]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<19; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 20 CNs \n"); + + + + if (lut_numBnInBnGroups[19] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[19]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[19]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<20; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + + + + // ===================================================================== + +fprintf(fd, "// Process group with 21 CNs \n"); + + + + + + if (lut_numBnInBnGroups[20] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[20]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[20]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<21; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + // ===================================================================== + + + +fprintf(fd, "// Process group with 22 CNs \n"); + + + if (lut_numBnInBnGroups[21] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[21]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[21]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<22; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + // ===================================================================== + + + +fprintf(fd, "// Process group with <23 CNs \n"); + + + + if (lut_numBnInBnGroups[22] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[22]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[22]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<23; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + + // ===================================================================== + + +fprintf(fd, "// Process group with 24 CNs \n"); + + // Process group with 4 CNs + + if (lut_numBnInBnGroups[23] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[23]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[23]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<24; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 25 CNs \n"); + + + + if (lut_numBnInBnGroups[24] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[24]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[24]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<25; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + + // ===================================================================== + + +fprintf(fd, "// Process group with 26 CNs \n"); + + + + if (lut_numBnInBnGroups[25] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[25]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[25]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<26; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 27 CNs \n"); + + // Process group with 17 CNs + + if (lut_numBnInBnGroups[26] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[26]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[26]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<27; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 28 CNs \n"); + + // Process group with 8 CNs + + if (lut_numBnInBnGroups[27] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[27]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[27]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<28; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + // ===================================================================== + +fprintf(fd, "// Process group with 29 CNs \n"); + + // Process group with 9 CNs + + if (lut_numBnInBnGroups[28] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[28]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[28]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<29; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + +fprintf(fd, "// Process group with 30 CNs \n"); + + // Process group with 20 CNs + + if (lut_numBnInBnGroups[29] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[29]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[29]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<30; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + fprintf(fd,"}\n"); + fclose(fd); +}//end of the function nrLDPC_bnProc_BG1 + + + + diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_BG1_avx2.c.1 b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_BG1_avx2.c.1 new file mode 100644 index 0000000000..7f5110072d --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_BG1_avx2.c.1 @@ -0,0 +1,1235 @@ + + +#include +#include +#include "../../nrLDPCdecoder_defs.h" +#include "../../nrLDPC_types.h" +#include "../../nrLDPC_bnProc.h" +#include "../../nrLDPC_cnProc.h" +#include "../../nrLDPC_init.h" + +void nrLDPC_bnProc_BG1_generator_AVX2(uint16_t Z,int R) +{ + const char *ratestr[3]={"13","23","89"}; + + if (R<0 || R>2) {printf("Illegal R %d\n",R); abort();} + + + // system("mkdir -p ../ldpc_gen_files"); + + char fname[50]; + sprintf(fname,"../ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z%d_R%s_AVX2.c",Z,ratestr[R]); + FILE *fd=fopen(fname,"w"); + if (fd == NULL) {printf("Cannot create \n");abort();} + + fprintf(fd,"#include \n"); + fprintf(fd,"#include \n"); + + + fprintf(fd,"void nrLDPC_bnProc_BG1_Z%d_R%s_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) {\n",Z, ratestr[R]); + const uint8_t* lut_numBnInBnGroups; + const uint32_t* lut_startAddrBnGroups; + const uint16_t* lut_startAddrBnGroupsLlr; + if (R==0) { + + + lut_numBnInBnGroups = lut_numBnInBnGroups_BG1_R13; + lut_startAddrBnGroups = lut_startAddrBnGroups_BG1_R13; + lut_startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG1_R13; + + } + else if (R==1){ + + lut_numBnInBnGroups = lut_numBnInBnGroups_BG1_R23; + lut_startAddrBnGroups = lut_startAddrBnGroups_BG1_R23; + lut_startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG1_R23; + } + else if (R==2) { + + lut_numBnInBnGroups = lut_numBnInBnGroups_BG1_R89; + lut_startAddrBnGroups = lut_startAddrBnGroups_BG1_R89; + lut_startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG1_R89; + } + else { printf("aborting, illegal R %d\n",R); fclose(fd);abort();} + + + uint32_t M; + //uint32_t M32rem; + // uint32_t i; + uint32_t k; + // Offset to each bit within a group in terms of 32 Byte + uint32_t cnOffsetInGroup; + uint8_t idxBnGroup = 0; + + + + fprintf(fd," __m256i* p_bnProcBuf; \n"); + fprintf(fd," __m256i* p_bnProcBufRes; \n"); + fprintf(fd," __m256i* p_llrRes; \n"); + fprintf(fd," __m256i* p_res; \n"); + + + +// ===================================================================== + // Process group with 1 CN + // Already done in bnProcBufPc + + // ===================================================================== + +fprintf(fd, "// Process group with 2 CNs \n"); + + if (lut_numBnInBnGroups[1] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[1]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[1]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<2; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + + + + } + + // ===================================================================== + + +fprintf(fd, "// Process group with 3 CNs \n"); + + + + if (lut_numBnInBnGroups[2] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[2]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[2]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + for (k=0; k<3; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + } + } + + + + // ===================================================================== + + +fprintf(fd, "// Process group with 4 CNs \n"); + + + + if (lut_numBnInBnGroups[3] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[3]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[3]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + for (k=0; k<4; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + } + } + + + // ===================================================================== + + + fprintf(fd, "// Process group with 5 CNs \n"); + + + + if (lut_numBnInBnGroups[4] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[4]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[4]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<5; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + + // ===================================================================== + + +fprintf(fd, "// Process group with 6 CNs \n"); + + // Process group with 6 CNs + + if (lut_numBnInBnGroups[5] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[5]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[5]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<6; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 7 CNs \n"); + + // Process group with 7 CNs + + if (lut_numBnInBnGroups[6] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[6]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[6]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<7; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 8 CNs \n"); + + // Process group with 8 CNs + + if (lut_numBnInBnGroups[7] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[7]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[7]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<8; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + // ===================================================================== + + +fprintf(fd, "// Process group with 9 CNs \n"); + + // Process group with 9 CNs + + if (lut_numBnInBnGroups[8] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[8]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[8]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<9; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + +fprintf(fd, "// Process group with 10 CNs \n"); + + // Process group with 10 CNs + + if (lut_numBnInBnGroups[9] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[9]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[9]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<10; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + + // ===================================================================== + +fprintf(fd, "// Process group with 11 CNs \n"); + + if (lut_numBnInBnGroups[10] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[10]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[10]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<11; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + // ===================================================================== + + + +fprintf(fd, "// Process group with 12 CNs \n"); + + + if (lut_numBnInBnGroups[11] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[11]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[11]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<12; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + // ===================================================================== + + + +fprintf(fd, "// Process group with 13 CNs \n"); + + + + if (lut_numBnInBnGroups[12] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[12]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[12]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<1; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + + // ===================================================================== + + +fprintf(fd, "// Process group with 14 CNs \n"); + + + + if (lut_numBnInBnGroups[13] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[13]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[13]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<14; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 15 CNs \n"); + + + + if (lut_numBnInBnGroups[14] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[14]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[14]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<15; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + + // ===================================================================== + + +fprintf(fd, "// Process group with 16 CNs \n"); + + + + if (lut_numBnInBnGroups[15] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[15]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[15]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<16; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + // Process group with 17 CNs + +fprintf(fd, "// Process group with 17 CNs \n"); + + // Process group with 17 CNs + + if (lut_numBnInBnGroups[16] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[16]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[16]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<17; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 18 CNs \n"); + + // Process group with 8 CNs + + if (lut_numBnInBnGroups[17] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[17]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[17]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<18; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + // ===================================================================== + + +fprintf(fd, "// Process group with 19 CNs \n"); + + + + if (lut_numBnInBnGroups[18] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[18]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[18]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<19; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 20 CNs \n"); + + + + if (lut_numBnInBnGroups[19] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[19]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[19]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<20; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + + + + // ===================================================================== + +fprintf(fd, "// Process group with 21 CNs \n"); + + + + + + if (lut_numBnInBnGroups[20] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[20]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[20]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<21; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + // ===================================================================== + + + +fprintf(fd, "// Process group with 22 CNs \n"); + + + if (lut_numBnInBnGroups[21] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[21]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[21]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<22; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + // ===================================================================== + + + +fprintf(fd, "// Process group with <23 CNs \n"); + + + + if (lut_numBnInBnGroups[22] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[22]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[22]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<23; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + + // ===================================================================== + + +fprintf(fd, "// Process group with 24 CNs \n"); + + // Process group with 4 CNs + + if (lut_numBnInBnGroups[23] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[23]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[23]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<24; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 25 CNs \n"); + + + + if (lut_numBnInBnGroups[24] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[24]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[24]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<25; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + + // ===================================================================== + + +fprintf(fd, "// Process group with 26 CNs \n"); + + + + if (lut_numBnInBnGroups[25] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[25]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[25]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<26; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 27 CNs \n"); + + // Process group with 17 CNs + + if (lut_numBnInBnGroups[26] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[26]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[26]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<27; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 28 CNs \n"); + + // Process group with 8 CNs + + if (lut_numBnInBnGroups[27] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[27]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[27]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<28; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + // ===================================================================== + +fprintf(fd, "// Process group with 29 CNs \n"); + + // Process group with 9 CNs + + if (lut_numBnInBnGroups[28] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[28]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[28]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<29; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + +fprintf(fd, "// Process group with 30 CNs \n"); + + // Process group with 20 CNs + + if (lut_numBnInBnGroups[29] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[29]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[29]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<30; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + fprintf(fd,"}\n"); + fclose(fd); +}//end of the function nrLDPC_bnProc_BG1 + + + + diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_BG2_avx2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_BG2_avx2.c new file mode 100644 index 0000000000..d36aa8e21b --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_BG2_avx2.c @@ -0,0 +1,1232 @@ +#include +#include +#include "../../nrLDPCdecoder_defs.h" +#include "../../nrLDPC_types.h" +#include "../../nrLDPC_bnProc.h" +#include "../../nrLDPC_cnProc.h" +#include "../../nrLDPC_init.h" + +void nrLDPC_bnProc_BG2_generator_AVX2(uint16_t Z,int R) +{ + const char *ratestr[3]={"15","13","23"}; + + if (R<0 || R>2) {printf("Illegal R %d\n",R); abort();} + + + // system("mkdir -p ../ldpc_gen_files"); + + char fname[50]; + sprintf(fname,"../ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z%d_R%s_AVX2.c",Z,ratestr[R]); + FILE *fd=fopen(fname,"w"); + if (fd == NULL) {printf("Cannot create \n");abort();} + + fprintf(fd,"#include \n"); + fprintf(fd,"#include \n"); + + fprintf(fd,"void nrLDPC_bnProc_BG2_Z%d_R%s_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) {\n",Z, ratestr[R]); + const uint8_t* lut_numBnInBnGroups; + const uint32_t* lut_startAddrBnGroups; + const uint16_t* lut_startAddrBnGroupsLlr; + if (R==0) { + + + lut_numBnInBnGroups = lut_numBnInBnGroups_BG2_R15; + lut_startAddrBnGroups = lut_startAddrBnGroups_BG2_R15; + lut_startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG2_R15; + + } + else if (R==1){ + + lut_numBnInBnGroups = lut_numBnInBnGroups_BG2_R13; + lut_startAddrBnGroups = lut_startAddrBnGroups_BG2_R13; + lut_startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG2_R13; + } + else if (R==2) { + + lut_numBnInBnGroups = lut_numBnInBnGroups_BG2_R23; + lut_startAddrBnGroups = lut_startAddrBnGroups_BG2_R23; + lut_startAddrBnGroupsLlr = lut_startAddrBnGroupsLlr_BG2_R23; + } + else { printf("aborting, illegal R %d\n",R); fclose(fd);abort();} + + + uint32_t M; + //uint32_t M32rem; + // uint32_t i; + uint32_t k; + // Offset to each bit within a group in terms of 32 Byte + uint32_t cnOffsetInGroup; + uint8_t idxBnGroup = 0; + + + + fprintf(fd," __m256i* p_bnProcBuf; \n"); + fprintf(fd," __m256i* p_bnProcBufRes; \n"); + fprintf(fd," __m256i* p_llrRes; \n"); + fprintf(fd," __m256i* p_res; \n"); + + + +// ===================================================================== + // Process group with 1 CN + // Already done in bnProcBufPc + + // ===================================================================== + +fprintf(fd, "// Process group with 2 CNs \n"); + + if (lut_numBnInBnGroups[1] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[1]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[1]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<2; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + + + + } + + // ===================================================================== + + +fprintf(fd, "// Process group with 3 CNs \n"); + + + + if (lut_numBnInBnGroups[2] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[2]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[2]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + for (k=0; k<3; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + } + } + + + + // ===================================================================== + + +fprintf(fd, "// Process group with 4 CNs \n"); + + + + if (lut_numBnInBnGroups[3] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[3]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[3]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + for (k=0; k<4; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + } + } + + + // ===================================================================== + + + fprintf(fd, "// Process group with 5 CNs \n"); + + + + if (lut_numBnInBnGroups[4] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[4]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[4]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<5; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + + // ===================================================================== + + +fprintf(fd, "// Process group with 6 CNs \n"); + + // Process group with 6 CNs + + if (lut_numBnInBnGroups[5] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[5]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[5]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<6; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 7 CNs \n"); + + // Process group with 7 CNs + + if (lut_numBnInBnGroups[6] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[6]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[6]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<7; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 8 CNs \n"); + + // Process group with 8 CNs + + if (lut_numBnInBnGroups[7] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[7]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[7]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<8; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + // ===================================================================== + + +fprintf(fd, "// Process group with 9 CNs \n"); + + // Process group with 9 CNs + + if (lut_numBnInBnGroups[8] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[8]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[8]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<9; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + +fprintf(fd, "// Process group with 10 CNs \n"); + + // Process group with 10 CNs + + if (lut_numBnInBnGroups[9] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[9]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[9]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<10; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + + // ===================================================================== + +fprintf(fd, "// Process group with 11 CNs \n"); + + if (lut_numBnInBnGroups[10] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[10]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[10]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<11; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + // ===================================================================== + + + +fprintf(fd, "// Process group with 12 CNs \n"); + + + if (lut_numBnInBnGroups[11] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[11]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[11]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<12; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + // ===================================================================== + + + +fprintf(fd, "// Process group with 13 CNs \n"); + + + + if (lut_numBnInBnGroups[12] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[12]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[12]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<1; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + + // ===================================================================== + + +fprintf(fd, "// Process group with 14 CNs \n"); + + + + if (lut_numBnInBnGroups[13] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[13]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[13]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<14; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 15 CNs \n"); + + + + if (lut_numBnInBnGroups[14] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[14]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[14]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<15; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + + // ===================================================================== + + +fprintf(fd, "// Process group with 16 CNs \n"); + + + + if (lut_numBnInBnGroups[15] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[15]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[15]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<16; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + // Process group with 17 CNs + +fprintf(fd, "// Process group with 17 CNs \n"); + + // Process group with 17 CNs + + if (lut_numBnInBnGroups[16] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[16]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[16]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<17; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 18 CNs \n"); + + // Process group with 8 CNs + + if (lut_numBnInBnGroups[17] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[17]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[17]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<18; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + // ===================================================================== + + +fprintf(fd, "// Process group with 19 CNs \n"); + + + + if (lut_numBnInBnGroups[18] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[18]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[18]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<19; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 20 CNs \n"); + + + + if (lut_numBnInBnGroups[19] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[19]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[19]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<20; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + + + + // ===================================================================== + +fprintf(fd, "// Process group with 21 CNs \n"); + + + + + + if (lut_numBnInBnGroups[20] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[20]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[20]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<21; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + // ===================================================================== + + + +fprintf(fd, "// Process group with 22 CNs \n"); + + + if (lut_numBnInBnGroups[21] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[21]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[21]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<22; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + // ===================================================================== + + + +fprintf(fd, "// Process group with 23 CNs \n"); + + + + if (lut_numBnInBnGroups[22] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[22]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[22]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<23; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + + // ===================================================================== + + +fprintf(fd, "// Process group with 24 CNs \n"); + + // Process group with 4 CNs + + if (lut_numBnInBnGroups[23] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[23]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[23]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<24; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 25 CNs \n"); + + + + if (lut_numBnInBnGroups[24] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[24]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[24]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<25; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + + // ===================================================================== + + +fprintf(fd, "// Process group with 26 CNs \n"); + + + + if (lut_numBnInBnGroups[25] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[25]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[25]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<26; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 27 CNs \n"); + + // Process group with 17 CNs + + if (lut_numBnInBnGroups[26] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[26]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[26]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<27; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + + +fprintf(fd, "// Process group with 28 CNs \n"); + + // Process group with 8 CNs + + if (lut_numBnInBnGroups[27] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[27]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[27]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<28; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + // ===================================================================== + +fprintf(fd, "// Process group with 29 CNs \n"); + + // Process group with 9 CNs + + if (lut_numBnInBnGroups[28] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[28]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[28]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<29; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + + // ===================================================================== + +fprintf(fd, "// Process group with 30 CNs \n"); + + // Process group with 20 CNs + + if (lut_numBnInBnGroups[29] > 0) + { + // If elements in group move to next address + idxBnGroup++; + + // Number of groups of 32 BNs for parallel processing + M = (lut_numBnInBnGroups[29]*Z + 31)>>5; + + // Set the offset to each CN within a group in terms of 16 Byte + cnOffsetInGroup = (lut_numBnInBnGroups[29]*NR_LDPC_ZMAX)>>5; + + // Set pointers to start of group 2 + fprintf(fd," p_bnProcBuf = (__m256i*) &bnProcBuf [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + fprintf(fd," p_bnProcBufRes = (__m256i*) &bnProcBufRes [%d];\n",lut_startAddrBnGroups[idxBnGroup]); + + // Loop over CNs + for (k=0; k<30; k++) + { + fprintf(fd," p_res = &p_bnProcBufRes[%d];\n", k*cnOffsetInGroup); + fprintf(fd," p_llrRes = (__m256i*) &llrRes [%d];\n",lut_startAddrBnGroupsLlr[idxBnGroup]); + + // Loop over BNs + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + fprintf(fd," *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[%d + i]);\n",k*cnOffsetInGroup); + fprintf(fd," p_res++;\n"); + fprintf(fd," p_llrRes++;\n"); + + fprintf(fd,"}\n"); + + } + } + + fprintf(fd,"}\n"); + fclose(fd); +}//end of the function nrLDPC_bnProc_BG1 + + + + diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_avx2 b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_bnProc/bnProc_gen_avx2 new file mode 100755 index 0000000000000000000000000000000000000000..186ab340072905ed3e4330ccf84de5ef29640809 GIT binary patch literal 617896 zcmce92bdPs`Tfi`mbwc|S=zD`sZs@{Nm0;6P!Jnp0UO1FsHm7&RuF~Qh#FfgSQ4>g z5+h1ftfzB#Q}df|6TFdLQ@r=|dUz%HU2OIdAvPiMxjk?l zewG^4^9u1&LqBb#UPC;DQPG#orV7;Y~8{ z_LH{UX8di*@%%pFVkzf@izl1?;pf5T7yJaDVY&m6j^)g{l?R41gZz@(Wm{0c@H6=7 z4L*6{vAYi+eDd)FPhPm_%%uaDj@*6V?!yP2aq6I9rrz{V+kFo>#N-sVV>N!U%x&?a z28ciL+c#f2`iV;(+T(yOckK3N!R`zGb=5^o8@}*0^Hv4RHZj&66ZZE?*uPuC{?Q5h zhb8QvhW*uexmyKx#Fevo!u|mX`#tb*9GiW2?~KK#FI==_o;UB*#V0KC7N5D~4DXm@ zPd$B!H}ANUPd(!VZ{FFbFI<9;z--POCY^J}l4DL^GUt?I7B2GU%$a}6sf&U=bG&`0 zP1$SjIl~4G8#IEYFHnEsFLJ~`^edWRJG0Y51d0Oh2>I!4zf$@cwb>-t$B)X@vY-2y zKHRF+{#;iC*jMeRZo+Md+8_1>Vk6al=}D4eg4(b9OO4vE%Q-{s5BoMf%~JbqWc0kb zYJW4y(!AF!|Dv?!(&80A*~P0_v2jUp-E!=%S^jM4Gs*~GcZ@h4COdXng7>m+6Y!0{ z7trX_tvj&oaw31T$v)j|ejm%*3Ed%r{3pNodE`vTn89x1PU3`=_=S!oFtJ(=|_hHonH+T=UxYGm-c)8rH0MeaSaR z)vS76(*HF`U%TfGt9F4bTOWdyb?2iXM?GJBF?RW1Kg0H|S-xlGB`{c0l`BHqL!PWg zl!yI}%}0IuVF%C-aFozWl!#k{dKSW53bkat>#i7tDbs{ zarX(T=gBd|2QpCrb;v<82(?Kn5X_%gAel;O*1~^K(K9=t1-7qiPYF!kHlfmd)_EN# zdY>;66JJa=2PSI*lOZ&j8nlv_Yzs^_2PTtf(l^(BFQEvMe`&6Mo9e#!9u?k%x92B+ z=!G@wmaADEYc?`x|I}kWa!_esKwTBYp@%fp073-{;?YE)8bY5Szc8<^Ip|nIFAKE2 zX8A_H?6=-U8_O=b6wP1u+sPkd&&tUkB3%fU{dRNNBSubT4?ewoW4EWa7q6Q9X4GKS zW`Co<`Khf<47izoYA$cP0-3V5+t4X4EoV`ls73BMy_BF7$)@YI>7V|)W5=e+AJO5b zZ{zLK$sd(HIC(Sr9KCMWrt4rDcxC2w$h_)<(((yYT#r7 zkt|kfcz?i5MCrCiX{6CN!=&zX1zA2mA#|967#Ss%-yhIeK+7k856 z#1*9xM=+JRz@TBo{pnwsiCYKLjKr<5Uh@$*8>X?uO(c-q<9YxN*>QT@z6x@P+f_jh zajgLb#1$nGcR7ix`_|-4;)>IVBbZ8DV9+q)dY}{;k8$69lbN`eVVdz6cN?kfd3#Qjl04sja*1;jN=BCdwS zT_rw9T=O*I2&NJj7&MHymp{u)+-)$;NZeW0Yd+$p!Zen+VFZ$UTm|3+;zlaSA+D=} z9O4Q91;jN^B5nbR+w!T&nZ&h7BaUDyae+a@h^s&;GM*09)nz8`ahPU29k>dnvBaH2 zAep$?fD?$jKtT?1$1BJoZVI4)IIrv?J>_MOaVtq&wfG=$Ez^i2m`Yq=&@kd=f0AqB ze4%nMOf&YlBI`9@kK6Kb0&yD&BolWV-~{5HSCB*8y$W)OTMZ~6u4Ph>TT9~Riw_dl zDvdaTsl){a4I}Qhzhx%wESP2_ZmRW~kGN`>#`d@-1d@rX`zVpPmPi?L>Jax&mC7OR zZ9oBWt&)g)fy6x^K1f_y8gT?ui3ImF!uC?KwN z5^;S=+;Z_j;@YGUM=+JRz@TBoJ^ts+#9al`jKs~iUh@$*7N)U1t|x(H;)(z#5Z6yZ z4sop%%7;!}?MaEFM<-N?rJpj{;rvuAj z8cW=X1d@rH3OIqd#R_tWJ48VaaiakRJ+2~&xCJDxwfG=$ZPSP&m`Yq=&@ker{wdeQ z`9ftiOf&YlZ{N*%&DY~zf@v&q4-rTv?kd0u#66-Qhq#**_X3Ig_>U%M64xP(ID)Cf1qKZxt{SDtc#Qk@t<1!| z1k;SixLaWwOWef-l8KuSIDxp!6yy+hnt~kS4h0kt*CC0xIubWfe2}=xG~x)R5*HXW zjJWx4=9)NPs2mH^j6JTk^_s88ef&lOajy_aChh^i3BD`rV&RlmAJs5VZ=S~dS>F5!!#ptv#i&A#0`XLY>#V8Aep#tUrQve6HhZzsT|@y0u&I}F^RaoByNNFAaR}2h$EOvTwu^J;=bLSnYfo=nvu9$t=D|SErDq) zaYqnHCT=X?kR4~r>lg(&#Ozqa$!BpY`gN6||_SMY9 zwT5X%;y(UE&TBs6Ho!ENxZ4RN6So|20&!~<l>2-(P$t{m!9-$M0?K96C%sH_paqa6?Vp zokK?fUXRO@yt-C!Ubp2%G=sUTDE`i&#q=89IkYQ_7Th^>j{tS0+^6mwx)1y7u7=mT z^YIoop}lix1M#mFWbYi>Oz54Y0`cyTI>}VZzX+C*JBKz8!c8N%b7;+A^I11{$X@Q9 zL)!wAYCtfpTSJrRokQi4dfSA+WF1ZHokLS5gzfi-7sC2&s{0kb*Ikac_&bLdAW_{9 zIeUHQ&`LrdD#+eBbT6S76lCvId4bUV3bHq#{FTsE0LIdk=pb& zm?roBrP}l?>ounLuhphgVH)=Str{3cAkzCw_fiF~031r!-Z?Y_CUqkfWcip+sH=i( zr@oL-0idAwC*C=95e>IIZ*nGajeF-%gt!WnB6%_(LR{T*nTdNGrpc255#p|bX)JN) z5J)C&HsFvrJHox4Eqj52Y}j5;=y(M=#7zMd5SMu8&};NjEj~zGY#an&%5?Qu;ABokNnR3dRLkuv1eA?}|ll|$UyfCAzY z?;L8mH;8*ce2}=ty>lo+T;0aZ#61qvjKp1Kz2+lsK1^eYJAgnkaf1Pe>^PzFUxW>J6C_>y|lp^CXt_Y?XiQDo-&TBs69)M{qaX%xF zOx#(36Nvk{f*j&%732_i0-%7n#5;$kkhrnpgTyuNokJ1g&U!r8#QBbKQ(>BsxN7S) zA93IQE`hlB2qY8tIN${0{;D8{xJ?Rjh`SF^KwRRTL-R@8a`8dp8u!kj2yu^Z$V}W- zFwIEZeCstIabsZ`+v9o?NG7fbZ~}4t6yy-sNv1o^G?uuB2qY7C72pKo9#N1(+)WB{ zh`SI_KwRRTLoblHS>l7lHSV255#p};ZLW#)5jP*E8HpQfz2+mXHB4iP+x~DWaa#Z< z5ch+E9O6DykVD)HfCAzY?;NTlakq*O64$tQ4n>ID@|(=WJpj{;#4Wd8^AR@-rm@70 zCy?CZssSeuH(5aras3tK5LX5$ATIIFq0&hp?&DvZoJm~c-Z>N@t{SDtc#Qk@SDA@> z38op3aks)Wmbi-vBoj9uZ~}3cDaax2GzB@t9SSHQF7eKxz9ep-_#knOd*@JuxcLv| znmAvm91GKoJ+8I&ny<%wye@&bR|q5%_W}=ImF!zC?GEJ&Y>C-w?ur9 zxW>J6C_>x=4`wEAIZQJWH_Lj>N8CV|#`d_j1d@sS_JKs=Iw57qsYBcjmC7ORBR~Oh ziFXbyAaNVS2Z?LkJBK2~eS3dq;$DJjM&fR@Uh@&R1g5dX9YG+OxUqmkcAP1%V-(~N zw~vAx;syW;h)cY4XeEg&5FaG2aqk?85I6R|%*3^ZX-48czBlJJA8{LC8cW>m1d@qc z4mg3hwF+{GyIesIai;?ch)cY4Xf27GB0fl5L%wxU&f)6E_QR0&(Xl$RX}n1v$j+3n(Bi@y?;r$sn#u ze2}=ty>lo++^k>ZnmAvm90=2lJ+8od&DZ1JzB7TiCkP}HcProo;+|EIL)_g8a)`SE zP(Yk>=a7A*abFU5g7_eDjeF-%gt%Mp$V}W4m}VqyiuIb0xGI>&_PAmK$;5qpdm?eo zkuv1eA#R&W0nK@M?yD99nM3!s3w#5;!;khrhcn4C#mrR})AkZVBK7;%-ooL)`faa)>()P(WPbokJ^0+-UJZ;u`nPp$KtH zZpk%qzGK`Jm}Vrd%6iR5+}AfJ5ce*DWa2geP9Scpf*j(WQ;PTFf_#knOd*@JuxG6W}nmAvmtb%FA9{2V2Ij{M8+zT*`CGJ52 z$;7P&oIu>e3UY|MQ9%xI7XS)~OT2TabRQ6RsQ4gpjeF-%gt*n$<(fDjaVNkuBXOgx z*L=j4!8De*e_fkO+}nT?i2Gha4sjnS$RX}|Kml=ycMh4G3~tW(*i_dY-}Bu$^yXoc z%$-AT%jd>-@tJbx(EEVbn>&Zz{2A_cxfO3|cMff%*YM7vf5NyXxN~UGECba2f&0{* zLqo8??r^%EL?rmfE%wf#@x&ihkiB#0U_!S5iY*ZD99k@yO8JMwGIHn8x_!+(RNE#@ zF`sqbetWxj4s8xh)&wR)XcE11Xj@>iIWU<-6MN^-XDEW?f6X;v{WjGt#rL{{@TTt^ z;y-K)o*#WUYW8f-{;9|8x%)^$cPpqzF4ZhTS18D)swH%Wf_mmstsyi^LH1UpX9?}8 zAbY>j2ZVYEv_0`=!sLUeH(TlC#;a3%y*547n#OeH#oBaIs_9y7+A-C1t2X`eDjOgw zk5H9(3qUB}5xLf_fl1we6vY1qC?wYs`b#Xdkju{nn$30i8uf9RB!!**;$y9Z{@9Q|4muIOSqwj=pVd?c)GNQw}*=r7Vg~xfCXK{Qw0AC;zNv zVd3}8xnEDC`1B^{Pp`C9o|sFuovHqyAY0xEa{&EXL5@hTSCAvp^AzNW^jHNsBHdR( zR;1^!7`qBYk%l+x#fr26|K_V6BAs_dn(`td9g}Jr5otM0Ly=yO%I0MB-Q|`s+x9Q8 zJ-Q%GC;=OcO6LOd0VRmE26)c<4a)oQoE}!v#S?&{BHgG{&QU3CO!JOG%8LL6A}z2Y zwS^x^Bc0yKd6IH%rM;A?`YFh!T2H8zf^31d5&HTv+fa^3-%*ew(#I9#i1c;^S&{ZW z7I|GF5Jei^m>4V42K-C2dWiI?OEZh~+EmksNKb-ktVm}92$g7gHX=P+L5@g|1e8Uj z-~7aSx1<}9c4UbnXLS*gJ{Fs@hCKZRP$1I6M3Kg)H#y&`TstDYNI|x|Mx+ZB0H!N2FIM$Pwuo3UWj`OF>qoKc`6d6o?`XZ#az=X#@UMT|Gp4 z_Qh$+iyZE!rJ6=W+8w5`A}s}wAku*fazxq&P!^Hiv%-3}q#LQc3MfUSi(^w7k^T%& zAkyMQk;bPtIUk~2J0cyeAX{D|(ryZJL|UXEN2H%#WE;Q{=^qs2i1gPAvLbzyBE4Q9 ziZr~rHddq!__uuZ5b5j7GmG@DRMUt^&xL8MNRI=MAkvizazuIxpe!OSRxT{*Mk@UQ zrHJ(R%WS!9N+Z&3fC7=0B#JaXy~%l_Kr5vAkrp@B8^XPa&E3%J0jh7fo%<2 zUL(@C6y%8XF$Fmyy;VVuNH0>5BhrNmvLgMKB0WGLiZr}wI##3&_;-u-5b4VEGmG@7 zRMUt^hru*9l6C};AkuLPazxq_P!^GHIL~^wq#LPh1(YJv3u99nk^T};AkxxAk;bPt zInPtB9g$8|kS(tf=@11uB5kK2N2LEb*EWD7(!VIk5$UrEs>)4@R2~PB-YpPC8r~ot zE7Au1Ysq?u^ur%#7U}v_(}+kfhiR-xmjFl*=?w~UM0!4;EFx{MTv*bLRK@^G5$StB zvgNWVjYxf@3`E*AQKa$dP0mj#*N#YksUVxH5$UB0azwgVL5@fdQII3j(F$@z+D$=L zq$4TPB7rE<@Mic}kv8DpXx2ld-&KN3(N(q>kqw(w>$KR&(5xr=h` zOy>IvvgI|C`5&Kc8){UpHOz|B?-k^Tbe)16k^W3Uj!1u`AS=?XZ236?QKaFG|FI%% zz`qQwhe&TYE3-%!rJ6=Wx;IS2NE#7oe*g(0ovt89q{9Ja5$VfkTJM&0BbBcJrHJ&Z z*px=3j{pip+B{LD@##&@XDio^NRL#IEw2&jL2D+uls(-=iSs zaDOGB1d-P0b)!DYg*|+lgYGmyQISR_^Z$OjEtfsIniZ!uNEwK>GV#{ zuPfI!{w`&zM-*gJnZx}}3bF+6lr{VlkhP`{2y|BF;vM0&OIZb>&%Sq~^h zq=(0*G$K78P$1IsM3Kg)H#v_}t{su~RFEyN5oxJ{9FhKgzHKN+q^~Q;5$PieazuKQ zf~-i_P^1?MM3IIMV2KrJ1O9b$JtFCbd6`AJI@L5H(i31BE7EBILM1vPJxxK5NDl>+ zMWkPzV7*(?jZ`XFqU6Ks#k!}GLh_rR0NaNF+oNrLB9g&`|AX{D|(&H55h_psQ zjz|Y8$PsB91vw)9?s(g5R-_v#()R?SNW+KC#EP^5|E9VgB5jXSWIWt|eq5SqM5G&G z8Y|Mf03?X?Wd%7ReF#t%kxo%AEa^rnivXpFv@ABI5$SM1fk@jViZnjG$@!aOZIvC7 zZc&geuMz1J3UWkxhk_iDu2hgC(o+=Vh;*ictVp*~qnN2DJr$Pwua3UWkxzk;kty%QkPs|2D* z!-ojPinIa$e!Lzcefj9jBE2ouG$PWoU>b@vGMRrAfKa5CF|*>dOhL|M{(L|QB3-9% zAK7t~^=>D}&6IjCmMC(#kE}R77n{;d=6?n#5NTU0Qd@Yl;uN3W1X+%01P$1HF zi6V_pZ*neHt{stnHruv_Ew2&js|s>N`Wpo~BE3ODj!4f}kR#IL6l8A|oj{S+2t<*F z4~L2sX#@VPd_6?E?C><@MGp6erJ6=Wx+_dWkw#XWDgcBcwQXo*Y(&?R?=PK7W{w`&z z$qKTm%;CPjf^31zic^__9Fcx=m~8+@q+1l^i1Y~s*+@ER;)+~rv9_j zz@TAMQ12g_S){*8HI0b$5}3w{bP<3AkzTDJN2E&uWf5t)a$!j~A{_xJMWlZ`#FopZ zG-J~L0t!UhAyK69=}pcXlxs(%YZPR2H6mT1AV;JpD##J(bOkvg9j+ipq#YGxMOsUd z{&28q7m74|=vS;r38soPFld-aN1_xN5BDuoO(P=x>p=-3eGx!{NWWB&BhohjWfAE~ z%7rD}NM$vk6p;>%O=(1WD4;;3m5CyaPj7N=uUtDK{qIcM8n(Pfq+1o_i1axHIU>DB zL5@hTRFEUmB?_`4T|b6O(P=R6Q;3|v=@K` zkxo&NBho>DvWWEg8P>Zc-ALtgKq(@8lE|BHc)l{zf2*G<=v_tVju_iZn22m`J}oAhSrH zNi~g#^m>@aiu3{i2_n5yL5@gQ0m>rM?#hKF-AH90Kq(^qWPe*Oo6?B11yTkg?UX3e z`1B^{mz8Trqz@^`=4wQGt%4kp{#ZedNarfZ5$R+FIU?<^AS=?X6ls}26lwV2x>%7C zOciNh&@hosnU-0kRjH;Ck$ycjL8R{jND%1`1vw)92v8Q0o~v9~(v4JZ1C%1ty<$@u zk zKCB=|q&EV}BGO^Xg(clcE!Qgt}lCJ(&W`;k8FH``&MnL zI}#tUK&$(y+?W&_mL>oTK-BWd-}}qY`+nH@SFL9Tc^{g2_GEczrhIOE7oTYl%>-=x z*4?@n9`tx3-eR9o89WYP9dO<+>J5GK)wX08rQHU=g`Xks6l`6-GZ`OiWAQol`gd*gdu72Xmant2Xtc4f{! z^3Y5|OBB=toXb-fXAwGFL3Smime4o_sfT6~>ZzbEIfu^@DpgR|9P|O9zfUkVYS2S7 zf24GB0{jG1dU21+)uyAZY1~6IwP{(Z=~`|2(fC{eV!UqErjNojJl<9QSXE*TfKa|R zjMu=V?l}di$08ECCl=aB=t>1yhu*n>mMF*`Kt~cfTtVugnS{nE$U0n4sHcKPzmKz3R>vShuPaC$g9tsMASniT zIJGd170!GBp>P~^Towx%b({t$VW6}QO___qO_ht0mRYv;AVAT9(vb62%2&tQa@mwi zVN&-EpkSaB|Ikbt#i!rKoPVQSs|97IxK7}G8kX(K;0Q!8&MN|CY*qD@OuO(P=x(`YNw>rvU9jGhJ%iqy9K3v7>1 z6l8-@X)U0a0VRmE26)c<@ydlA9j~N|Re+)*-KbOcS1D~w^Dacn>3{-}#y>QZMmoKd zbD46zXRhZgWvXvR+19YB))U&IAX}hqgq~24Bhot*hNh2cd3LrtGdnw2fX&*pYMEc|&*1IL$i1Z^sDI#4F zo3e&H-2*5PY5YSoDV+H9Cg&5CYe%Hh6=ch6L^@nSjz~Ky$PwueyW0kEMEaqE9Fe}D zAS=@ISo!+}qDUM0p_y8wpNz;X(%+?;Mnw8kn8u29DS!l#-mD-;q{{$h5osso!jf*J zG9FNhNVg8R<+3S_NQ;p&5NZ5FGbz&e^d{%$lxs(%_bABbYD9Xaf*g@9QII3j!xiL+ zbew`5k@i%O73t3@(o%sa(nfx0rWWa5yJZ$>hg8#uNWU1CAksGgB#3mof*g^)4=9UB z&r~if=|(Cy0!k6-nAns?q;mlUB8`7&CPf;b-sD`ZTstByR*)^P5$R_`Z9_RCeN{n@ zNPnXsN2E6>$PwxJ3bG=7lp;M&Ad0k+ADXE}dh?LXB0W9TG$PV{VHz7r2LVVB=|Ku| zL^={s7LjfqY`t63ja0q`lp@k=V^bQDZU7XBH2$HP6lr{Vlk<<2Ye%GW6=ch6L^@eP zj!63}$PsCof*g^4Gsw1$BhoDjvLbz(B7H(2inNg*nyE#)ePCvhzLIJh5$WwPjTPxC z00|;}KtYa3uLhJwqyv--OS+ND3_vL&{c2ZRE}PPbv^`P=B8`7&CPf;b-sJp8<=PSH z1_jw%jY!uh$PwuZ1vw%;Q9+JKrz^-2>2L*Ek$y{&b`*#rZRCe$YLOl^AhSsOrkX}X z`oI1OBK-(Jf=HXfeF!-s{Sv9Ni1cFR-I8vkaxY61x$!1)c0VmPr4i|AfC7=mKQxmf zjZbfK9;#eBB5kiATV5m5|Ms)3;fQprf*g@Pryxh9_bA8_>6Hqq%FRDiE=RqV2t<)K z@;(|g4mR1GQSU?K&0^x&E&Lve0r1fC%tTy zoyq){6=ch6Ci5RsknPQ8#pzlFIU@bBf*g^~Rgfdn$qKR}-O85lFAzoA$PdlbB0aum zn(`tmPNPyyBO+}D(^!#y+ru*Eh_n;Zg!*+vx&x`Qi1a$;-I8vk@;g8&B0VZLr4i{e zK!Hf(ADT&##-}$q@1x9ds31qA8x-V-bd7?nNWF_t zuN4AOq>cR0OfAwUt22xAnpD$>NEgC16lr8Ke+Gb1iMH*{;r>hoIfwh%fD%Mnqt}i8 z+0A;lhfj0R?Z6TxAMV$yl=kRqR-E1k6o@qbp_x3~>-0{}H!Ih+UoK^;WeT#X%;A2% zf^31ziqkX&IU*gZAV;L_737HYzg4!`tVpXV(yanfq>cR0OfAw*C`HD@{Xe>jelq+1hgbM0%)#tVkzNq+j(A|0S0N2KL|vWRqTC+ppkZlv-GpcIiVicM)mdNrUxr11~U zq)6k_o170)t{st%RFEyN5ouQiIU+4kkR#GhI@$(sMEbIV9FabxAS=?j6zR1BQKXIh z&`d4T&6Sx&`ioT4h)90~(^!!n10X@97c0mS=}CaHh_q0-u%sKQ^aYe6(ic0}a@mwd zq+bFGL>m9lOo}uF9kUw?V}(^q%9O=MOsUd ze%0Qz3q{(<56#pf9e`3~JluP!rV)|8)hCqiw8r zOS+NDp8=(a^n%!wMx=KF3Pc+J&`gRnKE28Lc;(s==@bRo@*0s2QjjCk3I#bL-QL5{M#g8Z+vCEZBn8bB!`9TA(-h;%lfK&0^x&7?@<)0><-Dc6ojceJprVasbo z`jLVhk-n%PN2CuZ$Pww)3UWlcR6$mx-U`&~D1j)_Mt*3f7U^}(GmG@(RMUt^C&Dz0 zq>&Y;z5qgzTE@(Z)BXx_Ci8~@N)YKfef!8u&8&AjIc}!Z{{bi}(#VR_>e!TKGXG&f zfk@*Yn#sxh`1B^{GnH#+GJm#$Yd0sYSYfNoJAuNHvX!^t)m!(#VR_p8$nC=hA05wN2IG1WFzTZigb}c6lo(rG*gRo zZDD4So|kGG5$Q~rhLJQP(oq0HB|0KKT0xFT_XdQZa*I!Ia=uu(c0_uTf^2z>NM|U>5$Om8IU?<(AV;J-eA_mTNIz1L6=^L+ z`l3J-X(K;0Q;W0^rN}r>`i_@o8WHLJFpU-IH2@Ms`lx~&k=_C*i%54@E-dLrDn|fH z5$X3ke#n)}rZgh$j+B8&;~$zyk;bPtIe(yBJ0g8vK{i(-(t8!;h;+4r9Fd->AV;LL z737F?yn?Jq*HEOr1fobA`JtIwq(}eoLspUQmTDRiX(>!&Mf#8bSur?~v@Ozv`gKJ5 zZ=}j1(w{2tmUJVP-vUYz>0z-cjY!W06o@qbp_vqEe0r1fSmoLgX?F$L@*0trD991% z=il3gazwgWL5@ftR*)mo8x>?lx{)HiKp={=ksq3=Mf&J}GmG?!RMUt^kArEfNcRH} zD$xTc_ z=}pf6{LWU{5$W3svgI`*{hfjwk=~{tN2C`k$PwvD3UWj`LqS%g-o>cb2!SZlMt*3f z7U`+~N>g6sDyT`RrV){LglViuJpc(J-9CrHFJvY)T{2 z%K-%NINLV5$X5e*jhRw{XjvENS{}bBhq^nWJOv{ zk**eqB5mY{W@?eX^mS&D-kNF}5$O_`#)|X^00|Hq#|y<5_aRC=&P z$%p%AVpAHC)&UAc8voEtiZnjG$$71E?TGYp1=;c%k)Ey~N2G@-$PwvS1vw(^t{_LG zCCSj|Uxh8YsqR#KfAN`lgUY&Hgw+MlE9>S>JZ$2s9TN|ovg%(G51F#+t%(OuyL^}H z&*|kIQgiu0ejYTf-`|G*sphHw71k{OqO|UaKHf`0vCc(#!w(r#} zf5xvF_4%2f)hvIu^oXM-9y#%-iAPVI^UP|S<=4-69zD?lU-NFh$EyC{w%Q`ktL=f; z-FSTkU%h?L8;957crC!o-8y5()v*1e*w;4oy~3j6k|w21n^pM5ZAyy^3j89bD-6HT z19I`asxD2MH!Uh{QQD+Mvlh*pHEGtYWs}n8Es9G@h(KI|=Q7Y_*R^~Ps` zk1XH~hT=n|XoE8Q#j+!Z2Wk0HSXf+$wDsG@!+bKhnugcWc&)_iKJ0r8uYcitAK$Az z6;7Aqb$@-G=PycaOXN`wyFPf0!uM0~dKllIm$bFWvbGt%FU0Fq*{9ye*G};ELiwlG zPWKM<4y!$)_89ND+T)c)>R04mR@>g|T)Ru{P;WQnE zO#_jpZmzxi`+_`Ms`Ct>n_qo@=P6!ZSk%B!gT84pFEF2lW=~V|y}8#ENRini@jA3G z#{L42(r;nVwq7fIuk_mI?2A1H#!`c}^sIfASAqTgjYKNFA;z97fGv%ETYP$6_Za&b z*k9?f^Gxs{b+4OJ?GcFndG8V^4B zk*&~tqgN?Yx|d>D7X^8i7`6-0qQ&^jmOk`Omi2~1nEsjgotkTc{EP8Ut&||&BBU+E zx3ETuiA~xf@Ye+TYX&bRcrSrki}9P^vuv%9PYe7tK{_h5DgK%xVRO?O`8<%ZDC^`y z_DO$A_rRL_crg`w7=LpQ`OlJ`eT((>O|22$@w*7`O|Z}9B(5YaP|xP@z!JAaj%&ex0Ru{lmE_0Rf!g8i}(8RFTI74jr_6Y*_!0ANxsa1hsr1a&5%a;XUc5+ zH$%Ho>*Sy9CH$A6^|JEc(ePgm51o-p`0oUt?Xf5SCj56st3|g0uV-{e!Y}gQ7pZ#( z{P*!XpdI^V=6?_dCc=L&v{*I14@AkknKr>tCGR%S8-x7%V^}vFr5NB1!+@nJ@~=X< zy5~(T%4gJIySG5fmWKak_}#P~{8Q`Xza@^J^u=RiK_>l^|7x!jhCW@5eMheg>d_O& z!)*NbMbBaXFGu>$XuF;$cM1IUMJsmAP=6kAJ*2EOM{=7WJO6ta{%3mQys_S%-a+2p z;NuW)Ftj+vx=Z|atTz+wHpbf@`4@NxEB;4&+4-Lb{ud+leDHsI!2iD9QHi-)pd(tV zD_XxD`0s+0U7_Cs!$(&ByF#t4F`O^(dVsZ%|4R7C690x_yi<+Si;(|`-Xx54$p0Yx z<=^Jwq+xI5U4xPz1pbde9mXN=x!wU8`L99RDE~Ya$;$r`-j!Z0+J2^YZI1sV!T%-o z;{Ohe)hO)Bm&c{}aRi31F)Xqh0d9+B*ZD&c|Q=ZL{J3bo_&e%e`j||L1rQ zct5EZ|L=hRwdjAV@y9LXUw);R;RtWMKg6&0XL|eiUwD5v{lA4T{BuN}Z|msogPODd zE%1&E`rlsOkLuO_4|=CTZw1gG``^#J6VQH3GxopNz5af+_gAC|+y5hPh<}FnT*mhA zh)IN-k>}4){`b69_(tkHo{9qP#q%YrOJZs<0 zNl{=GZ{Y_e71a8)KGG2DKlBs0%lr|ZD=|GsU;NEics?b2WUMZjd}judmg8R;wTCHL zV(}qm4{KmQ!<15f`l^5VIqH{Oqy$o;@LZq>;~;w$RES^v6MG_Z<|ZC^#?CW_u*~$t zb9$m2ncDMrrlTE4nBtu&rHxFYdc4sW+ll9nJl~)np3U&Qve@Jx&Nv?C86ESZ9Z^X^ zg!PmX$uz5!g(D%Em5@AGO8G|bv|&1)H8NLvrG5Q3j<$75Ir9-ND?qiN1C5p9O=Jm=%y7O>#xpVq9WoI$ZH&9SclI7>=9j?Q_GMAc9$oH1Zs zTL5P}lpqCbSl^AU+ydivwr?>$Tf!UjZVungkZTisBgQ?nDl#KH&Nr||JbP!$vSvIJ zXRm09Pu8Oe{+gM+(wmwX-#$|CJb_vvpB{d(3_NdR+J{rY|=B(IL zSSRL6ue7iK=Ei@{L9t&kI+o)lQPTRAURG)_?$tO;FFLSV5N(hTs$Jqg>mi%Of0=0y zEdwaS2j|T=+tUiAXpJ^#hc+n3i?OgAzZsj@&Mjf*V^6thLCzVqK)SZbf%BX^|Cjhr zt0q7s{#PJfbNmY9e;asZ9IHTnoZ)MU-<&;@_}>z#>btdpuOgJ1aZz*{#(zfAF#fl} zY(yCUJK%c}&ax{|BgX#@D6ho-a+HQ%O5u+&xD0qZQ!{=teS4r~_$xupTj13Svmcyk zY>z#a_+9_@?}&EmjCLr153X9UZJL|>efVZso5Oz-vxim{I8R{SJY(jvnvMURVOasJ z3(h<`nzFXXXAAslgFGtWqYK{IQ#&G;GQ%hPF5`b&Bbw-dD32_&#s+x8D!B zw8ihXu-*;z8i4)PsO=!5!ul~F@qYl)569dw+rI+-cS9@r-X7ivl(jkXmiSLA#{Xd` z*C?zrbVfZS{&z!(M!|9@$}}4K*aI3HjhV4|V8^ zR9wAiSp4UC5PKg-kBlNbLQ4GSh>B6E74Yypit&)~mXV$jm7{?|ycom6_|J1Kj!KK* ziCA%9#c0Nn2#>#9DWT@eU`gMM|MXSgP2xY}563eS|Cvu4#0|#2*7(jNFym|mO41T~ zk@(*MHE9Zca5Py0oQTB#wn!O`|Lm)bQ!FP(8725#ZandfrX3K85e<$1Ty5gI|Imzc(z|TRS0jThx~EzY?k| z0>(beNYEJ`IakT}-yH}w#MO%?#&3Pwe+0by(0dQ$-2*}vxh_rr_ve;`t{L+`Nhe^($Qpn1msp-3G)rTUu*>#|Lb0g3=zkuf0XZFxk`Bx{?S)?+)=RjJLz~Lx#{XU@Z7-C$SAd66y&r1Z2f2+y z4Q>2q?jG{!gEr!YT=m-|{_kmynFm1whj}Bhj?x0HIt`zU|I=~#RSDk5fhUgtCH{{D zBJqEJsCp7?8UKeNmh24{%e?)-gO2|rP-4b^@;cpUX%Ob>TjDpz7yE$SQtbb~#Q!6~ zxsLxw;FrYz(P;Jkz%=9kEU+BL|GC}-sB0>?SX*y4UPnT?2O^ptkCmfJ?^x5n>(~ArvEtGh9;&g1H4M4UM=SKhMSzU| zXPEfEZzTRtM>{S;i=Byzd!xADINO4SN{m*T~lE}mtUqs9{di8B6oMZ5AW zqyrSrD=2LI=kbnbW3;LQ!c}D+?PNT`D94z={KZ%OTA!CCR^qP%KEwFm6HHe_G5zpj z{I5pt{Ya`D%8X?wT8w2njro!SJh_x zuStmivtcLk|6-Itw&U90s~?EKNad> z{GS7lw_`ncF*Fm7|3@G`orZL~Ba+?)zI&m44nlsrBZe~m&&A(ec-42ap?mcSa|L;(@hQUCAFIQ)1C0NhyxY7_pwDxH`2Qq&)&*$I<>n}{ z30y5gS^thz_E(|*-+7M%eFNMx{@;x{G5$Y@Rp9$j;-8xF|61>D^nnfDui*P(l=2ni z!ubCN`pIuh{J+eM|IhQTsc-Yce&_f<9&v#em~%{G_Z^jQ{{68E~a5&=r4CH<|J`Y50HvSI>D;=@#C=>q=Kxy}c?x!KeZiqX3p}$Nq zQHAk;G?;6Hei6q1nTWHqp}jdK{_mHI|22qw_1#*dY%NT*?2IUBt|--{m+O!9RL5p#Q)!Wzx39j&o)Ot9qPS?*JIxOh)azB zZ=*gu>aK;F-}JUXL9e6Njz%xi@&979^)s?U>p%Xl^xJqH{K@`2ueHzkKgZ|z zU*i84Xr(xJ>D3>JD4Ntp@{8s&>suH za9sT1HBBd*(ZFI8e*+fu}zeNFtCo*IA7K@GYgmM;DO6n}0-yU#NDy%fjMtI=v- z<66Hjpr41J>kUAjL)#L)A1!+`j>GqOOAw15Hu|{_5uhJNP_IHiygEy)Zt<@7eyfgO z=O7Z?YV>ml3M#(xmpEz>9>4yKs3H2<+yB^O?|c+D((SCDzoCpT;%w|1Z@NFqr+!BJ z)X%3V*9HDG^yI72iUqhPY@z=W+M=J|-Jk7S{fzWidTo3jzdXMi_!#Lo^V@lUgk812 z7D%*o`F}BiB$AaO`6b^4v-|CD?hE%bkI=);`O%8A0O6lpXF&S`^WrRa)uVv zaBvn*t~D?wX1|n(*C?=DQn#Jg$LNQvh*ATo30LsAh2@m*%rC5i;IfA(Hz}Qbx9{Qg z8N4E;6dpL|E3-VD>*T5#ulJG?hAVqqO=EqS8xgK~b9R|4TRU&`!|QN(y*lTNrBykf z%Q+=sh3ovxhcm{qiY`}~NljZAggHrT=sdV)$3LzM^H0_{>4VohaQ#bWv^gh0Ozr^U zj5KZOk869aP!7)ew$!f8ci~-BAnfyk971Yveg6#XAS75q@%Yf_tf1 zesZJAxRNU6Ax?yQ!fj{YM5r9Tw=?;dBTcA(p4IcN8MZW6Iyk#3E8EmRS0}lG%QcBs zWW-gG%hh*A4T*sCN-NPnqXkol{y8JNv;PX< zR1ZtW?<@^h$jK|U#dt#aPnIeA{k!h2P?*2BATxkAMm_e!)= zCB|W$;DPhQRSEj={{c8R;uXKgyBVYkW!#zH zzNi)TKL+i{x!_{FhQrSgv{3=hGJBwmgHUbGbo4ZPip}>nm>(#{SsdpWL;d%Hy}MBt za-AkMNiDF%)FhQB`ezj5IxkmAsYYID!mE&|%T}-p_0O4hcjH}|T>qmw8R4kVGJJ0b zTWU!3Uk?9_Mw}7gRZhGvO0G6w3M!0iuzn1~eZWm?8uU-SJm~{S}xMDhF%T_~Tsq zaAQUNcZ2^yIP0MPd3}KBpX=uCRt8_vgNJ$(P!{TcVxa#)I4cSDKL|dC;n!f;Tm26M z!(PxT@%kT(wrG!3hoNpvt`bCpf_?G&AC9x$Bj6<*{|vx-)r>&@hoYT*%#KxIW@{YUcrHpI`kw@wQ2z%Q{T~La zImq4Jj>oydc>M7Wx&6`36Y*LM%ac(~(f`4iF&zu;55ivVDaK3@Ec>S^tbY)IZPSJEC-zCSFnhyo#+o_O^yfsDECy)&lQTXlF1?{kMgGUPr??#bYz| z72TMsEqbXBolyVXjV`VJJ0Yj;n6)TH&V6Ac`tJoR(SHx%yplxpPc25bK3F}W{wLu4 zX*%@DyAbz=MnwO8(Q>@fVmJKm3*JTlyTP^!Y8qhlKh`ka&*;Bj)H!|~2%V1vZ>2cf zoB{tM;bjs2N-&R0{nxi~3eduYK&@W+{o=b-&ZaSp#2 z=g=o(4&X?m+!>rpAoGI zI35e7kAhN0g5zE&e^c0wGWs8iz9;(U6-%R_CF*}X+O!ZY$$KrS|7!dVKpotT`kw^- z4@H!q{ttvI%Ain*|Kp&HQP?*N`PSt0zYj_<3^QTvkk?G$hZ+5kLB8?&KL+zw6R<)t z9W}iI^Ttz~%uXd=_uaM&-fqsrj(2tLY zWlit~`qRDc{vgczU5y8DJ&aa;(5v(Z`_xZQKh)2fKtHYgWnO201N5^i+Ov-@`soOU zqT55c_PGu-m5aUYXpcKF+cgC%2yCD0a_zGP?ehitH~ZJmF^4=D`eOUs2zIabwjz$) zi}_7=8|7mT0A*qOyn=fZubszc7%E?R4pygd=3+#6$;jf*VBI3*b;5iVj3(T(YS9rEg zUqrZHFq+98lOWGqID^A^1a3umg>zPB2lh)z`OY&LDNDFlY?9x3e#O#o_J_V%UVdkK zA~HwD-!gkeD}LiBJIls1LT(%%vxGcCNbB-Ul;@vfL7()`AfN8mgiOHysAcK(&RjYe)!^6XvPMt8LxKd_+RRs z-#@RN=NSvn4`hao=Omm_k~ufF3D0UcJHrz2UJ%argtg0`L#Rb6k+tUe7{7;Yz~8b* z&V*Oz4=ZqywPM))DO)$EU^HQ1Tr2aW~AqwQY z6)j|Lj5XpJrQGc!y2_UaXU1e!l=C9IFNjxNQUAQom(La=`@BObZ12|a&)Q_ue;LM5 zY|++8(-GtJw)jORIQ}Wb(UDi-auFM!;XJe-O4b)`&>1a5{dY$z@VZJ~O+)=N zhd!uLHAT8JCx!l-{n9L|-|s($+C zv#J;mI8PMnpV$AlgJ(WfjEd)Td8mKhb;E1^!+2zhkoZRZcSX%P>&ceT`schH?|Es5 zPu{V|xeY!CiBF%ZkN&HW2e0xUfzna`Lr`8mi>d{Alw*|9|AfRg(Lf>2j6(hIkJ63C`ScK^-#yU( z9?hhx(t4bKLz=wquR{hvTfS6}*P}KLG0F@zF;cPQz^6 zd@!6%|NG+{VXvJ2=NSDT4i7~*b2uKYvIuAPbBzAaK;AW|O&ip326D-!|1KyAkE+x^ zb;6?+uX*P2%f~lv-OL^y;TSth!8G+Rb7ICI<&E*bE9xrx?~l}6)!`M&y#9G0^xqfX zs<3x3UZMW^e7CMCUM)oZPX=3);n~CN&lp66!B9<8FgzCDr-JQ0@oDux4f8>~YHBy@ zB;{Lc%urDOv(cg>aOOWA`7A)&SAyXRFhKoJ$C*`c*irw-psw@5&j7HWWuyLS*$Hi- z^?y9h7W<%Wer)uAGV+{_b9WC~rT&jYo)faTN9i7f561QR&}ToKUEgQ)e+6bt%5a9d z2NZOZqyHmN*8^~6P?qhdnBQakzdz9bOZc@I9)FMPL=VIjYUOw>!&ND_g3$%A6aBvm zuCwd^G0dy52M(4RaFn!A(~E-;EiZ4^Y#4Ft6rgPUbOuzY(6k@&1Q- zo%LRG|2nif_5YdoC9p}DU3n4LO4V2Y>rkryVfJn>|44r;;{O%6&an(v6@3!upI0!i zL(8uN)6M`m0_PGl+{7kja z-;h_9Eo`5!&^`zGk753;z#Hqg@!3AFd;9yR;=1?4aot}J{{nxQcZAROIo4(4vZ`J4>apR2;GD_5I&ZpMw}=!f;lK_2gM9X9`&V zaP-8x!}yF@*1r-6pZ3h_9Blo$V#rY$pBl^h%k>u=F>vEJyFXHOLu!t?yJ0-h8^@Ed z{=Bkb2=;{aXRnRce;^{!9yn%5{j0ocSPaB#FkUQ&TooYg&Z{0;p|qSGvGwQKG4H_R zYO0TREyOoIXM~&7pXZy+PztGkXYB1`P_DKQ$1kp|vi?2cog;l-VbR@K3`E&@PaL0{ zzBj)0#^|SsNv-QY8gaD}7Kfq!2Ov7`m#hDQh-$~wB1&nKL;N6A{@=)otQa7-oq+xibi{dYxu21V*W93>xyzXK5C`hkDm zkIAteH`ad)>VGKeKLhpO$JGB|*d1>0GlTlq;JAJ%>c0qUVAGxYFT>b~^}h;7=d&>q znu#O8NrC=FL=K`Rb5_pA=Wm|OTi2zg$FBiAsL{}z;;^*;&qKO5r+ zZg)EM|1Ijj3}-Mm;3&_n*xv)IRUJ^?HhyQU+Wdg~2w4Bsf&Tvl{V&5&{l8eF+smKh z_wj#;W7AC7ZZzq6Rl&)~buU~$FyEB_0JOxpsBy?2%RdjlOVM&H|L;(@E3oo+hDp!z z_wrf(9{xC7tNbEXsG9o&a0f!APlH$B{|oqk8vZ}QxTgzP{xPnV4*fra-lzS4W&9uD zhyKIk1S4qposR7S8b(Tqol@F<;-7`wUp!1iWod1U9z0LLS23%TksIV}<4pYv-n zreSJcT`K(NpQF|M%N1lie)8zfE7I!2e;HyVuTA4QlJMU$7z3o$fLF9}e9-~%Ncd-b z=a_^1=buAji&29dJ8`W@#usvhdX^b>US%r$%awav2_hF9rQrI3w4xg<29$x9Mr(+W{)MmwA>=herZke1g=aU{h4pMMUB z_ovW`_w6@FYR+y8{~ZvO^QULqb9BP{L5HE`hTwQe{(D22eKPUS=RFAjoXM(2n$CD1 zj#qv7m*?P-Nsg~tAuXRsAiX24{dnx zOJ|e5Cp_fa_!JV(hWKc=b~t)A0eia{{zt$oXXn$mDF5RywipNxV-5ekFk;EKRbfV8 z3XJv&_&*rAj`Mh>CHW_kzJ>gcG5n7J|HlOUkHr;DlhYFew{fiB8mjlvYGvSocR+{ycgMLvzHKP- zA^#%`|AR2j+86ED8Dr@^Fs2-uFF8iKA^#`9&qB;}91i}cpya2(>xp^O&w$c+zSR+T zip|D#UBdrGXca!6AV2?SVXkos<}Pl;b$`cUHsn6E`?VOuo(%pkG}m3F7a`>T4qRcw zYtn{b+$sJ4PVj$!dSalPFjFG@{{j5JZ}@)|_X!LCujEa?2ck@SGcFxy_#d9*pCjn} z{2z+(=EQ*i@!0GVy;4_&*!@ zo`x%uEdP&Ue()5mT)dk%{~0(}S&bQ?yA}Tr;f&!r!~bh})A#m;|NZ=3e9eCsA6KUN z2m1LO?18faY5!BqRf|hh`yT{d<=YO$Oq{g;g{Z}fp#4vUsz^al>ZyB$M|tGRPY9_F3h*J_ZQ*6z||psOvKrfl>dL; zV4vmxAVEL&Y-8u<<>*m1o<-PSwj3PQhzB0w-7^dx0lAOY@6dzH0@>8^O|ELO*DP6_ zV-b4gIEt^ZG@%9OgX9_{&ew3ZD7vvmypK+v7Z-m74rjtx3)esAs>1oPxcUn!clvN` zVCVXC+|2Q}oJ%CvpVv0DiWVNfI3APw^MCg2Tz}q~#rkvYnPaV;>(BYHmN)`%wK%T+ zEFH&};cQ>D2y*QON1vR75j1F>ADc29m z|4(+R|9zwgeNjZ*&^ zIHI`qy9CFGWvKs3%;cSd@!^e5{!;%fxE@>T|DuDl{@>^7|M5=sKhh`vBeBLs{zu~~ z@94JJl>Z>ic=ba5r(w($-Oj+e%P)fRuS5CoiNd%Nn&tll&sSK46_jsxD!=%D1OD%X z|F3rPzndTW-|8*)clPgO7yM+TmA~-V!8pxV_&fY2`>nO?7uygE(^!vTYC%HZ?x%R6 zt=+5-e&g(oe9}UWfHpVALgIY4d*!!{lRT#Ij~1b|9B0JFmdbt$OU6CXjmIjPN8s@^ zJaX{}A^9>TXN))lB>ri~7dP6_Qf89)DRWfed?7uvjQlODB2p%LkhD?{Nfnlop2Ll^ zZ*t`!ebJA+Bwsl`@|Y?9Z3$Tyj@@~r30sMCUYvcDjb-2(1z&RYpVW&sJpS?uNA96T zI8(_oM>o!4aW;w@)A5)VjxM;DvtFzh_sMvJZ5N)mhgaV+HA^biEFq5$jHL9+U*V{M z9+_HHV2^%MvYpFETV6*=4|2yb{f0g{JIA^)AGQ+zxc0|9*miPNCsT0Lz;+O(!*FKGdMF~9h!H?GXFm3gf#x!~A_DY%E8crB|OMdivtuKCf9 z*TAuMas{=_6v})c?^0!HWpv2WNxQHfau+nU#1<9x@$SXsO;dmveM&bhGkY*CJ7SYEjTTll0$){7QwYu12Q6w7FgD|@UjTVKXUY;CE5yaUW_ z5(~&1{YXTh6>G>B-$g4d4Qwd z?=Z=297FPs2y(*6Le+3Rl;7E>S!(%j8PXmsGj+xCa=wmh_smPqd)U65kD(6P^IPJR zI^+MA;Hm`MQ8-{N_$+PqsI>UUFXZ;JFT4u9YbzzQ%0wtn*T&>;&fc zoN~6BjemURLnqXlS0{G{%KsR`rzn(RFCz~BJ8LC=OZ;n({XDMn>Ubh@tpl&n;8SC5 z{Nq!ysVY7_!ZUN$N$nTLKe=Lsv5OIey+U4mmm@h9Ej?1=jKm&ln=35gi#=L;E~66l z$Poxzll_AInEu2!d$&Y%iD01$bu+RYOfP-c#y>JdZ4#q5T2NKt(N}nH@(vtagj&QVCb;jvwge&S2|EZ5oSL!wPw`NCBMo-5k;Cow~=ap6^`^7IBiSDVjb z;97qe|JZ}1ENmmLO2`vIc&7p*5RYr*gZZ$$R33X4OT_(!2cV<>*9H54QCI+_(x@N<%3uLw1Q0q6w3Z3cZKl(74v_1u#D6z zJ+QU;Wbq0plK-KDR1dGp=hZDT{$mde&tD;u-_j)O^e~@F^&LkyjOLCI0cbr@XgRX_V#wL=Vs&IQ1hEJFWh*40b7ax6+_}5uS4g0 z+%SB4SYPOgcRuZhagi<1m%CxD<6k#i7Zt|8-Ug3*E5ms($9RJ=BN4{Gf#!;;eyAt^ z^LHr_T<_skV@{+5vlqNxhv)tyu_ugwyB`-u?Y<*33S;t@5???X|x3t+i$$ zCDTdaDlo2lJ)gUJ@)BZJFYJ+i&T&-2m09azd=s4)7wd_uThtxyEM*KxR3a;XjTNRy6;Hals$F*;iV(W3}KkGv?Ip{SPUovN`xH6Z1Mb<~h ztKD@-A1zZE;x}Cuf2P1W*B#3B-)Q)t%($~g0q&S)CfDv2<1Q7U|FpdsoB^b~yYt3~ z^c{4Z)Hse+tN-+ubNp-ycVj3?nER(1;~F$t!L-*oo6FD@zLnIiR#G=35$=IAle@`C z*);51CH*%aJm>S)^%sP-nGz;r1)54-nF)k*dFtN4^N~39pMG=$$RXE%vnXX8sm;M% zS=>=(I8x~9K?QPgeukkde4EH?4)IrzR{iJ7$!fYeNc1`|E7yN(7`L5>)vgBk^&wmj zg!2-ObN#oPoUGZ?;kWHS?`*qt)PJVVQjMHVF6zJOJ;FB$|Ene7>W(|sJok8*!L>g0 zCH=RQSn9viuxN$;+d-;zc2C1HiHqySwN!x+r_g} zpq%^l{I>ebAz?-?y;X+1OHx~8ZKCGmxc#>hkwEee_SX;2Qj-qT=`BDF! zg?)J;qv`5DeK5}c0!nNgJTU4xrx5JN4fVN|PIViG30Br2e~-6ej`6NSmvT ziHv2QO%7+1yDLatiKHGOzun|`eg*w^jQmUbZx<9${~g7We<;I*e#)!U7z&d#mubOm-OF*jH}-QH6~L_kKj4{DDa+#hwCPuwn5#{e^-(3W2D{6 ziYq&rr}81B?_owJE&_v%oCn|=yc>A7lje5DOFk4*lnfE{0P3?|$xFQ7QD_7mK3}?}GQ;>%S*?{x~BTH*(JP zpR3K^!+rPRPU!Ul*!?YDyz0MO7@7GIw7Uaej{BKmb|&wB1^+|;Jr7-;Apd>D3H|qC z(tj@#>xB;b@6M$E9%IJQ17Q1Aa?17JBhd4g=)afY#S_d@DKLladp*+6ujw4*rXLhv z2zRCe!Rn;{+)rQxl2p%=lKxwpYPEYII6BpUWUD7f5!aT5YthX|c91={kH--x!RffZ+X&x=O+Ea6=hXLClO0w;;3z~%fTSHDwr0NO2 z?Z|5AzdI;t5jA2wUn5%!2au8(T<7}l_D=fmbntL~)%nXaT-!d(nSCB;HH-9I5}lk@VmF(EQP) z|DH+u?*{6L`tKoTe<{beC;j&#w0;0-c$s-r&ob{T^xwCcA*uem4;~L-g(~%*8e$)% ze1SEqc5qBio>Et`p3o25_20ui((hYHdkyO#eVID(7-OQJCe`=RBhT|ORR4Xi@Lp!) zh5q|`(tlsa>*q`O^pxwr_XB4~{r7kHX#E8JcQ5*;z-mQ%f%#?dei?r*XJ)DYz6w?Q zas7*4^xw>EC%Xcu|9*sgg#PwsQ~WFF^;`g<7ty%&jE&xmR(SPtNO zG8p(bA%mA7bGBbDLAP6fuR}JcfrWF%k06V$L8`33*Y#3=k9Sjl?;_2!$jsg3|8Y1J z_4iG9(>;LhdQ+;u`Ut;V;$Se$2r5QsJL~D%vl%qr;yjUR~kq z)PeU?v%gvxn|&wM--X!+SjX!sW`J6MTe+LVy7J?*sK4{GsK1{~^|uab*oiiupZ&D3 zK5GHK5kSxreE;6g-+xT}{TrzL9Q=Jx2mZc;`uhX;`})M+pCE-l!ME_)* z{{Cy??>*G2FGAZN;lVYUI{zcE{0w#ceF*p(wE$q0;pZ9*Q zNonHO^trvb_f(~~ri@f!JFewUyT~gEwsOMO?^Sg{dt{8rX+_n3>{w7xtGXN<%NAbk z-L+izOV`za3Z4l!a)75GhGjM{c)#i}L3qJtish)n??_ zw$-#NR2Q6Y>e#k+cWr(FNA>tC@wVZ#i^~Zyaa{401i9zPQ(yS+IK&9bv{dfX0F_4xY{s+c9x?>we$sY{yQ2{ZCF4be-N#k;Qvf=8BafEMzzUl zscH{$#dk+oX2MNwP*?Te@7qqe<`iH z4T=9dssHEG!XHncx3kx3&)6)c9W|bIaq$0Q_^;ipdj6k+bz=iG-%Y)lM@!OO3m4E9 zt2SIr4@CZ7MW5o8@xKlJ-%e}$5?ZXm|2O?s{C^Ps(tE)c@MustYR$|7Y{xmU^k@68)E;T>dm-_$=?& zvcc#vt`99ArPaWsT z)%TTyJ)XShWm(=w2_=8TC@10tJaJtPeWbMqWa@w`pp883A(iqr_U|?bi+IGJ`8&Sk zv+%i#@ut8nuJsr(wsCWO>`VEqFClu3mS>5UX74F{iUNY5N-5{yZRX--rQDQDX`B~`oW{7g7On79P*50Ks3yV<7<)E?m z`d<5Ic|NZ;*kjfM%RX%MWc5x!!AN_CNg!jBO_L(?~hj>T*5EuLS`tVlYzmN3|q=YytQTo_PEoI9m z_MN4seP%5HmMQ+)0;H1A1P?=YwU7i%!WR6t*Xy0Q$p^=Gs|~K;Wh%$P^qCVPOIPv( z4msjeVH0wB6du5O7~1O%Db;J(vV9hL*b^<)U+HHq)%R|tNMnLT?{%RQGHZhnM6I>Y z8(xcph%FU_J=YvkRO^Vi1^tE1wNf1Ui(jGlnR711#_MW>xGO1IE@B-sy?|YR%kt!^ zypa3et6u^WVU@qGvn$>7Y?RKmJQ0%6FM3l+L!TK#8-cl151)QjQbj4!+bQa(J_q8d z=ajY65&wWkh_$GQlOByqtkP$Ra@QcPT2=K34P3Q4#8r4+RbM~cKh2RD^VFBqzHqMp zgjkP&&^5->ze~8}Q22|f|Dt9}qtJiaA(T(;K&~n$XQYDOTFRjDs}13gtQUGnoPFbF zat$dA?|D}((Zfw&Pv@2D2WOf6NTsBPx3)Cb#^s#Sn)Iu^D%PCU=A#z1=IfRAyVrk~ zs{H6js<*X%WugD{iwo3*Lk39qXqW|=n96?(3 zpO#SfGjlEC(0^Wq{&Pn^tsTRN75=@>u~qkohc&re|Cz@Cpb1}i_b7DDYuDxRY4!c9 zq2wTzV<|cI!n0N?RqiS0p`W|bsOOFrBq{D*hS6ry=f}D-lo+OI0)o-lw?gy9%JJGS z-6?!5zs@-Dy4s-rb4P>Ff9{p3_mcisx&9jkEHM{C8(}kkJK8Mu_HPDSWkYZ4(0}sM zJ<#0qNsXyZvp(Is&(nDR#7tXHwL!nbT>rUlp1YoDt#cmnSnl=h*0WH5Y~{`U8l7d~ zj+3rv==zNAv7l^*{tGL0fwXEB*Q^#NadCe)C0N<5Hn>**WXjU=>8jI?r|Kte`D3|v zA2{`&{?wuW^ zLQ0kN-xy*I=E+nrncPAD3CGBkCf9#bdn%kz|Bc{nJ=Q1n-$>xoN8HsTf7ij4H}wS6 z!*v4KOru;a_v$*=cXV#cbfB04G@<{d@?;9J>w!o8H#5;roijS|q&f)afTOt1CI`K_ z-LupkA=Q7bn(w}n?xZjpswrdAu7MQFkly^J96>61=sXwqqpTw*SGb(bIoE#^fl_}t z_1{c#s5S^uD<#Z9rt~CqmCR94VkG5E1XexG)qmr7>T2okOW6dJGr>#!Hw_xiB1Szi z)qm~-Fpy^pkViG$Lh6Jy%9^In@`CiVdi^&S3w5slW&xe;i_m|wkrj`z@N63L=x%Ox zlsAIA(0_XC$?1~*lMAEBG4{1|wRwFf7XbHYa#8%tR7h%a8 z0wtya-3-cd)p_^vTui+Q{ii=)3vtzdQ}9o4^{*!4&*yIz_bYg(KWVQ2R`9F|U!d`n zH3x|MqW_#%phUD{nRE9__21eA^H}cZK(S%uJ_6{Je%EnbNLf?iU9SJ;gO8rj)>Hke z2N7=)9991O)87u^ORG=)biln=m{kM^F_E5?e-noCk7Gj$w z^q;G5EF(Ad-?_lL7I`=id`}_v7Jk=P4d1!w1ohu$&ixsMQU6`Zc*4nWc4}ORnmXwGV-JTI}ga#GkUXy91id|3!kpT`^doKPzYWMw=)co|AoSlQz--S?q91=Jh3@>H;tfc>r5G#Wk7gN?kYQhN0m;;Oh zp_Tg2S}>F6^WfV7=zcl+@2sN!+XEz_|6WDRT>sq&9jXnX|K5ZI>yv*0e4YfBE%>0S z|Ma`Q0Xl^Kdv#$S?>tcP?INZFrT5v0KqW)J>OQ;f44x(b1CZ~D030o#`fPs@L>_P=xoNbu0;Pm z%>7|Jz(fD-A@&>b#_gN_do>hzk{sF?-#QEw8}N@j2>)&Yo});%evG02^q0Srn&}Rs zhm!vLJ?QjKU{U|Qo8t`p4MYFEl{{zR^|+3G4ep_?ydQ7wTY>K&^}a9q@A{BCsf=QHS~NBXS)o&vMO>@lqVy9W6_Odel?R~{c{wDYs*KfRC-;lq40dgRrV^uDy0 z$CJE!jK3#|X&QZ97b9VJlhd(w{r3oXe4d;>O6({3eXQE*fiL2H)L1>NL;s2O%U$%} zjYSj6mX7AbEeD^xxO;K7AVf_wl0sduP&r?}ox}rheRkYo>c2OGh5GLW;{3E~`h67Hwf*P(gp&UIXQb&qB;{`E!#|SOt@x6w z|DI-qJM`Z#@#9theV|?cx$@Re(0@M#>Tjd}oI_7U&m7k4OU2qIVOPldM8+;Pian7&P%M>?H& zjP;s>@k;d3x*B8LG5YIhUf^jN`JdO8FBaVg?Owijyeh`lgxv8f^YBT)ZSFo5D@Wmi zYB6SM4n2jO_MRP)(1vN=mgpF#BRP)N#P~x_|FCpgO3=S&`e-pVKSxDl)I)m6KU4eG zoE>v;r3cvo3`w}j0hUraRW!RgiCzHB&@fNA4too=MYWzd>Y%-` z=lZ4XPkddO!WAmQPuo$?SeHoay3mIFi=7;mcFx_7d%4k5P+olRxP>Ew&i{$^DjW%j zu`_ua@-KB_r3^<)#WrNBdVg^(n%bglO}plWD`Ys5ru=JDanw_(D#^bic>1(=A6&U# zsgE&d*Rxgr-POu55Jw|jQP#0IDdJd(^5X6mjubiOV2M4~-(3EO1Lt7!a`f08j9npS z0PXKsS;zHk97_qB*_p1$wK*e^sAO$ zX~@5$DV5}3sI-$gZt3bejj5mN8pb}++ut>+lz->Jx|f%0d?;C!<=-^|CXmx8^3pcq zzRJq~c%F>r&z+6*G1t!To)(T_D@~3@D*vNW+2YoH2>Ewh)IF{oYtdU?`FF>$3FN28 zx--OM{CODH@?|8YO(Jja9kJ^vj0GOo*O^A1gRu04{7-@l!AsXZaU4Smxe|~2fwcgG zb5$L2RQ{b+Tzv@nZvnDaa?#o~khZ;Rf()g%Fp<2Ke%1oGL!!IKzd2eEhv|NM@m~s3a%d*#b4(y-NAl%FsZ+#dVro8)i1; zxrgs0@Ni|7(En4xr;(>2|1(I@Q<#)ewU9EGf8m@+iLOyGAMOsNzw3%DbIHOrjU4@$ zNRO+5GNseBit;}fThDZ0Sp>dINabG386|2z?hh`?{|ZXeDm#1GpN}Rl<$n=5Ey8v*2D^*$Kb!KFfk7*LvBYtd*i*>me<^%8 z5xkZE)xaF`@46K3&#U~;gy#)F(E<-#CE69DXL0Y&Z@tOCGu-Rwce>{FR`QGegx#Oj zb#W$;kMci{(${cz5=RR>7*p5)M#{hTqsS?j|CR7|562qH-$Y6Mfx!9t-G@Cz`M-ekYV1l| zfzwrhwCGO8s^VD30qktku-z^Lw~+tcN&feM$u{1&u2xT>2Bl?+#3iy$4Pk$bU7K0t;RkT@_#e(dNj%Zo}&C8OY(mM zwxU%)aV0jg4cLXw>=AzVo1OsVZvny^vE`i8t^6OrLUbbQb}Rq;$#pT7V&(smB>%UA zQ}y8zu&oE`HzxVt5C4{88Lh*nw;Bu4)zt5$NKCH(-;(72jvlkWk~9}Umw`y&9ZCN0 zLH?iS*;}#wD*sPH=chWzzcX$|WAAz$cBMzLD!!HUJ%w`le;9eb5zE$rr zmr(Q6|Ib6MXL$3zUgiI(F7p2lXnzg$>0xkD|9>*c|6Abv9jpfNSKt%!e>YqY`G2M- z@?d?O3AT%n;}2us{e5cMKVXIY3vl^4)OnI|4d?6sDRW#NV@>*}nV0?vRC>4M!WofgS{J-{}+MpSIGZck=C1$+kZ;(|IK#!e=j`vwBBEOdSJG{>~Y(h zw0BlL1uZ{(ezmojTloA{Eh*l2!an%N4mH+MnE&sKLMBlYi4qBGNpEz~~(%)15>(g6J z`N4np`_%HFPixM9Th^6B@PBlX|9a1Aqi|j2>i93c+~sC`N~z^0b^_I3wmSa1@^6_F`S&%C9B5< zu1>2W`7XG$i2lvSGX8JknSID=ygcN;UQZX&Hw^xt4iEH*Ik#&5uTA_v4Xj;#azbGP z@^>QCaBaCtVLMWKMUnq&s51xg!Z?iN@22IwrBY(vXK329k(F&wK>nWt+;!<(9sgYq zOF!KG(0*eX|F3}m*H%%!-d>k5&VLT0^m<-RqetYrZYR_3ub%&}rzJn1_WWh|_Pm*^ zebDf2ed7Ov^q->sUx6Pyq@yKcZidPP6LE9mp=-T3j!#RK#275V=>9w1L7{@={`CF;Lxqg4t& zgIc%3{~zP8@dYSQ1dYjLx0(;fbf z&p9^MJ^qedI(A^I#PPZE`~!c-kDT)}n6`^^hf3w^@9RGFt}`X9dUTbicedd;Vwlcd zRyyN9mJ~Vuwk=14kF$sJ5*$~vWbt>L$eC5;`PY(S94(2Vyqi|Ue|URpGD@w)a{QeQ zljrUp4fbWG7x8!P^hWY2y>|t9cMvJZKVR+M+}+(c@Lvf2<4Nxo~%gtyITEd z;!o=!fq{SQI585dvNJ?%*W@{f|8gv9gJ=VcVE% z&-iZ!-<5n*g8zFGwB`7pR>XfRT-ZpglcB|_W%&pGYx%w}1h!qYQ##_mjT{db@!!Jx zy;u^34`5y!dSByTH>nF4qCFd0ezmtrE+?GqqHvwt=}eXgh2(r)$+FY;CH*^+hfn#l^6713Ts(q{yEoQ z{%d8EV%qy$gFs7-q4#5Q`9B^EulFIyVh2oCzuY-H*poJ~r z3FN5%QZ=&x^?q^2iu~W$&i}>Oc2*^NRHEN%N}reDl>Zxx{9n!Wa@v&(DkTTn<=A0d z|NZR5^_4u4|7UQX&rvA^|964KP+EZ768|p%m-7<;&##mmDwX(uIsD&EJ2Ciw4sFh! z{X+7Lm*b7mng8d~;;WwjHzfYAr)4;vbo&zjcTxZ4|0xvHyZ+Dl|62I}T1Nga1q1oN z56o`Pf$Zfx9FKvEvC>>wT&tqSfq1fpTl27kpJZoZ3XWV`f9s|Mu*Rb=$^^Cz=|DW$YF>gEa z{|M>6QRM$;nP>Fgis_e=!g+JYf#Tgz;yA}w6aU|hEZ$D~-uZVA^N*ea+fTIf|2@?I zuO$9IRt5hbqsD!Z`v0HU!{qiSPyU%+v&SQd}EhK!e~r!acT z^qI4}zAt<7RieI&a^KDQ8=U``<2_ve3CH`meu?A#T>lxz2e|$w=RfCojO)iaf0*;j z9OrOc4_p{s+f)pn;P^4u7Zu-mzO8sKF5+SQN#r4}-iy^z7lYTjN0ndu%w4KGZ$GLH&a>*~Hy@hm?Z+?X~&J}4)y#H51 zYL&x4&+?HLH^20oYI#;uW9K#FF0N{7=^prQ*zl2~#*7^|e!|2_lUt@vo6$O}2;65$ z{C4p9BF8(p{u1Xeb3DNDHI6|%8_MxAXhZYDJ9##eV-xA+#TK4H!$eP?pTeO5K|Xwp z16fV7X`ELRSJ{Q{%B*qPwsV-qwDLi|T27JA#Huo6i7?Ou{OQY!wKS@&sm(YB3~CxY zqpq6WZBP?G0?2_~R@=X!vG-Bjwm$`i&vX0*NnhZ+ zjN^|uka0~?Z6B)cx_58|254$)>+1ReQ(5G;j{)n&R+~%5>9XBTHLxj+gvXXH8pj0{rlI~*LKan@Q1+m zJg~~wH*=lyyvS4GE;MlDJieAV*A?R<2i*nhD=e%{h-ozGExbgz-{OF8h0hi7d8nIn z&QJ06eeu3)))byf??>q0zot_8&k_G_4scAejvS}DQM@mcWjI8otLs#v@jt^eWlgv| zl)?PE#EY7`n*Q~5ozp)_xld94Gn}90{Cdv&N&g0}@8J4kuK%6mD$4jTj(_F)3C>S( zewy=o&Ko#yjBnruW%=u6@rt^UvR>@AT(*ZvI~`zBjH1=`GJV!eIFc z9@Br0gZN$2A0Z9#^Y`uXuOYu<9Kuq>M|cuGlqEbVf8pCo9Gb?d{4JbMEgn3pHXwuQ z5i(9yHz^gWFrSSY3`Yi~vo`*dG19o*1aNHo3eUgB`Rg2hljm~J_dT^uS~+jxei6rM z95&54(lhScnzjw9Awz}^ZEhYmeCV*@Bls_5{KLiW!bIw` zy5m29<3Bm3aBn+R+4(%r&*#{}wfgeCTvr>wY1qioW5-YFJwe;gdH?t1J&XkZ!udDc zt3$^F$G>s?Ke@II-ok-?OL`HVk=n+zN7|-y_zk?5cQd&j!1Z7b^)2$2zC*O-(!Kf# zTyTXc;L;KL^drO(->-1o!?Uk(R)@TfIAhNt!_IxO|gF5w+|JGC9Z$FuKqC=bta&<>PNsjYTDXK7_Rah6t>bNsGC z5lz2}{raN=1~rWu*InL^^YA`kcpK+;a45gvl;GXQ^@q4tH-mf5zl1;UFek=$UcTPS z@doa1=X?ui@JcjN_Q9)d0p~>=uPoG%jIT`{pPf<$MZ8K6y1V)XW&e`H{?0&nYCHS| zj^{bRJ+;A=&wX5fi{nqZ{w8PXQ8{FM1$zxiXWUDaN6GUM&Nk$0HbEIcK=J#hD{h(ccj@!64&1#Ml zIChht-@OYsuHvB1rf>HjbABuDBS3sY{Kk{wZ+ji%`;q$I<2g^~n8Y!KJcO09%Fn6& zb{)?y=3NA!<-3>Pm7mq;&=!+lw_k1U;2nfd*Ih~HMqknCyP7w zmHjJe@dgg*B7HtV-k;>y!}Xb*lC!2=%b2#>K5G>y#b!kg9h?kvyZR;o8 zp&drqMArm|FwEkaG!?Gmy>w6X_uYIB;gBDeBi#v6wmnc<{B^nAB;IxY<=c80-|TbH zP3sG%AcZWf$?tBCbCAs~9J{GYE~34}Hh$3p^xF)rT^BAq9axlNDzqZW3JZbT4 zzNo^60W|WG5h=CkYKm`9X*-p^$ZGz!wXK6&Y|_@Yp=~>qux7NQ*`DcqH1+tl3GieJ ze{<6Bl(xBTlM^?I51q;z^9;_yJGR-N7twzBEOFG>=G{fAE0X+UEME#`?P9!_{=!8|mM&YqV&$sUYff0V{-lk?5=Dsr+SIXE}jTkX>Si`^(14oYokn2H%nwv+C95rgRt>6AxW20^Jp+koa8!=+SWWIBQnze?i z0aH*LYr86`Y(-QJBSFWGzkjQxA}%s9UHq_fXmvfwh-;oNk| z;loF+ZMp2&flIDE&{CLo@bG1auG@d0<%Hwc?mu|=+67mhi0@?k!-H2}&BJ2{52xqX zA33&Yzd|sC)dk!3**V2+dK6L094_aDgx4fpYaLJ`dj$M23 z@D=k~4t7Pm&{7P0_g=kZ`HF*cT8~hRjvsHi z;@FYvj<(!z@Y*X|mb7d-?Rc@=GEfqf>sn^zV9sut*-j1LT`*(+MQddx*Ja5P6A z+__yJM<(gbYa0vQb7*N9hw@yz&oBon<=1^?%ZizG|8{w=Z&&pCc4e<`SM~aKb@43{ z(LG>`7v(W}c)z&9`&`U>%0DM^Pw#WO_4GccTu<+F+V%84r(RF*bNco4zMX>I(`QKq z`YowIzafm$EByj@3iiRY3H(LG*JhSCF^6aUhBaW_rCm;>XrLEU+k!7lnovJ*KwZP2 zhI$$$0~_lb8=LAI1`eXp60rsim+A9mz!f|gCw^=#>yJVyh$UdZGrR$%$7hmht@`2ZN}41n5UND zfQ&X^gE6yCuYJbT+L7JAh}U@g&~KuJgz3@7YUELt0yAb!)-N8kzb~fsR7)E)4WpJl zt9WUDlh%A1XQ5A=`qbL0v~m0^_m0UpuJd}1C%Z+fViCPXNPW6yVzhGDpR+&vajw4{ zsoE$q+2HAeCVNLb&VT8T&?lpZMjvi>>ZM&$xGdRB^BBFJDLwVf+GfzVrF}_h{pnK) zOCEqJ^}BcTRy&0@irYBe%3;5pzIqxT{V`|k9DNSf7hCHHSL$DDmk`(MxW9`-+eTSv zvp&)fPBsVa5~(Lv7NO%M%PO_4OTD&D^li7&kJ}EdPVE?}?9SfXz*-J7`#P64`ZI9|V>|C3{{Ko!I5kKYtxMqPK;idSo2Z?(v7+=F_U14&Hqaqza z+(KbWH}OyB`Iy3fem4{lb^I)iKd&%@-|flZvZf$Bm#4RLnAv1}jCI8S7QYjd2Afwn zi|dI0;S~R0S;0HBr*SUl`tE{N{O_1;Qz$%?o}8Nbq+<{-)u89@uhNSif1LGFqN!K$ zL>gBYoPS{XRJs(x1t6YP&cS&S&a5=PUhJ0ZOp<;n&&uiZ7;>RJI2*H?V2Q4_>s%9M zC003cE~fK9DhF4CaUEM{M+&(s-MZqYb0Cz1${}VxIEO%=duM7o^Fyf@wn{;cb>zSN zh-cNL7jtKLn#vmEy-)IbSgCyHvx>KKSgc*nf^j~M`#E&xNq2dueNf zTSlGjE=~C}HG_Jhb6L(qs3y3+jQbWk^VC_adi}dMNiA1Hs>onOk^im}8vJ+mNAQ1i z73tkas}5{k57qtVTuroZ{Eylq?d6}8mzwghzKZg5$(R4mL<#T6Wv+6N zT51jH?v8Y>RV*jfBh~X?SvQsQu*_>X1-nvErs=ixk2C ziSU0uDTDv6STnJ5^7O?mkkWNG%R}}2Uzzy7hZQMKUg-!6|tTYQ}ZFz=0TwltZ z-9~u0Gx7h-GXAeARL_6cc09^3))nyoSdsrHJA_p+xNnyGPr6Iy1X4~!eq9;Z+3?lz zepcbbT#I8MQ0yfl1-Go4am=c zn->80iIlyMLH_Fazm2pV`M-@~s^$L$%)V}e_Intd&-s5L{J#^LRL}oMXsg{#nK}RO zq%OW+_k)Vz(NzC`fIGm?X(e948YlAqeboQH^52>NIsexr{?-nqPvXDp z-@1--wfui$;{O4-HH6l#{J*zwoSbgaO`&4=)5QN{tS0kjTzKUFO}I$Bu}}Pe8U8;` z{ku0gAw^eI{@+`%^aACr&lY7Z*`C7I>{mEKS^o!R!GBximBQGJTm~~U4|Bnlcvg7OoRUQ4uVnld|9k$*M z{NHD-oQK%y>I=aCcCH_*ggo!RP-w~m{x5WZe^vIERp}3l$a^pORkUYIzdkR27uTit zozs`{>^V;Pn^OLk^GZVAS2De=FYi6_{!~1PwtBpaYs-qXwtu75o~IPT$RqHJ-<%GS zcb-0nJ3srpx?rn6hcwCy45BaK9OhCl$Q3*Ni}=2Yo?GN#kKGATJ$IO3{9U4zsQ93qx?;${$IS0`{SPh~Aa zo{O>an8jCBoa}G7T7x^gn5%sVDe4N3u1Fzoq;u?E6BLb|)1`W}-h*esA$QaHknx{8wPG`Rvotm@?1^y1{7D>m8Vcl85hO4`Nh59P2`b1ju!(^UHQg8 zeOGFwh*Dtx-{*Y~N~QFRJf)+$F7!$0n~+T=&2JgZa7Egpu`7@PN7xU0kp~E8Y zpqu4-<+Hv9`6dKWCj%Ba?`kMQY0WT*jcZJJ7|WG5v{Xf0WzSl!%`NO`LL9x)(EnP+ ztT9Ty@-AIm?Lss%ix`PM7zb=a(|DdME<$6Sry_t07YYlE_0sU4d+LQ9tNjaue<9}&vm zYdH)#D9J*|hWt?4L;s6MgwX$CY0qO8UsZ9^Zl<-z^-5gR*d32!9TN9VcfDM#dfF&l zKiIv5EIHOw8-lef?3~(vLjN19o*YB}4=3F~?sEO_YANcm;gqL^uZerDXQBUl+efJ< zRAQH@k>p^G<@#T3m+ODmU(5CXXs+wh8X00y!&R>Tn}Nn$8lZwY*p;G3Cd@pW-rbdO zVdUKi?j5Zd3vNSs-k%=V2(J4Y#zMDP8`&L})c@{;WcjW;EUd0*Q=guw|A*6Cv21(H z4y%>)|9E1$3eE(29YrK6lO=W)HrfT4I0`s-l*Hvuxd%a-|h+LS%}qb z!WnH3TP-mz7W>A94ybO#L5TC<`bV*zdbAYerZiECT!G15;^eXW5?Q};{cpW@*R8PF zT4S4#bnE9(u#^hw8>J-br~9l~$HhZkp}o=i``hY&*Cfu6^IZRrA>VPydZGRw4LpW= zo`wD&MomylDbw1hM*^4iS;`Io!jVX~@YQgo?7Oay+QHr2)c@{K7W%)LvsVA%sq7kR zlPO+F&~dbUtY9d4mh`_n(v`w6E*+<2f;`YhupZ|j^#3SsOZtCg@nt_CbZ5A6Ks=E$ zhViGx)}a2EHhm4{`o9&*&V>e{|64du!=^Zm68iI->;Eb6YZkHGOHKVhg_6e*w_oDo zEPj=yNkB9P7^m^x6|}Xij3u4=e;UuHLw(B&{V#VLcwXI@UpbDhtL+|p?m6C3|F`n2 zT>sAm?iR{jj4VvzcRr)OgV1=P|HpCF%v*EG^}nl*kHog$kI@D9L2{j^3E1{$Lyr;M zk0AC^@S4l>7O-8Aq_7;i%GaU)=aPOIwqxl(oc!GlEMqO3<-j_SvP1tHOa1R^o~s#W z7!Mwy|0e^{YGN)1rZvdNN@Q#qX~zQnIG~%xn|j`;|7Y?Pw+Eh12D1V<%p#Se7q3kJ z+Yhq#*?Lrq#0~{&X@wQRwT3x7ul{joh|vF*<9>$fKKDQL3#^_U4kWI@8v1`Un7Hi@~yO+{X( z!d>iePpcOuoBiL3r!f-czv z7l*Ja?Q(co(*MhWSp6?wcO_X`fUUlXd)pUV;cf%Ze;fUOAv`Z{|6jme=>IiPeFvOY z|DOw&bN#=sumR~h1>QMgt^Pk32t)s`=b8JcZ7*C5W;2;YrT*Vftc&?KYCugnHQaVBf-W>RiU!*`fc}BfpNLosNu${=eACp-Acq z;K=p=B}nrQBzZpazY|#w{l5xn-j7@_N5W4+))#}R`hPoDClDv}|L*kV+Dz`vP(=NI z3esdx?Um{OZE#-={Q5Gq)&JXi(EsNXZ&QkU2M|QKjFV&D2HXFKfOb06K9ruMDWd7> z8tB|wxV>Bbe;sdbc?J6aN;rH4qlK3jE@A5Z0aij(|Lc`MMN z>i>QGJ;u@3P-_2I(*O4W|6NJ{-vZ|!KzhE4OsW4L0l(XroZMXa9PnQS+^=P_Y=6dJ zA7@vd4`_310|6?kQSE2wSqW&r2a$k$|Y zTE)B2|D~2zwRo84Hgx4AAXuN;54rw753iVI=>5|v{XEXQDXpacm%){>Ji93A|I>hW z9ddsvDVCylHd0@}+zXv^gKC-tr>Hi(=`hOdmudiV!unkJuay(kH zr2j8N0xmB+2rQxh?RP>Obxyc9lDVg$lYc7|7PmOWh}vQ zuwDP_?-2U`wSXM@|8gX$uOZj}zmI;Iirjt<|Cv4f{s7%$`~Odp{{IGRls-e99Y{T0 z%nGH8nY!^LdP)8N9q{q1`#944=j_e8oaHH=h34<;p#SfH)^EcvVmGzr7;j!feVv4l z#5<@L>i=VCpZ8H>U&A(P(2FD*o|*FAl>AH7vzOTiR{tT}|1YGc{(KCG?@fN>w3o76 z|Njeba{d16=CU|6lmmg#MqM4Z!1OL-tK-=O3}OgZlqB>{$D8Wae+spZ|hf zkIwdF>i;iNGyg2LD3%vyWY^%?lI#CJhr^-&2W6jT5>9j0oIS>GLbMM*YVgtNi+VP? zeJ}N~1`ch}^`*jnV;5|ux9s!oftFQ3q->)B_H9~$iWj`%gJD+1BU03<}2{3+*-q_m;yRy}p z^0OvWe*O-)UYDIpO}-B**5DI%F#9^Rn4L|@&d*Bnvnso*Ff8-?Rmdj8k5yS?Hj@3Y zXJ;+hBImXCT_%K9?kz3@Xr+{f|IecQg&Y>GE@H8kJ+>oES-;2*n5|roDv53ei=fAYf^9=fWr-XP{ zie0j*x$0a9p8t&_`aIl(P$!5zmfJ_*9woY*5M^Ney^H4&`ep zbj{m$N{+uHQ~4|bMBX9)T6LW@Bc&bb(7GBU+sePAlaAmzCgDCR%Dn9TfQTt!+^#(QHB312I(%?TCJ)Q2w=dIrb-&+gyrxX+=(}}4G@!X!Q$zmM7N!XK*CN|Be|OqZdW6htp>c#jvb>D&JzmxR|fMj=aB!9%0a~F8kB#>z2<`9BwDsw zh#Pp~euylzz*GHL^p$t4$Jw}!P-$@=1D(du4jV@f+J`6gAph=oQVu*el5#ni zc)9#*Y404ImFf7O(y4}1LWgiYlDNuH$iKV7tBte>=sBccRCpVhLJ4yWR==;#p%vb^ zbC$B%N?hCaKI@7Ur5g~qo<{{c_MHs|0j`V4^KDK*W8MH zZQ^b_cx{3n{kYyt>0_{0DF54e*1h~Mqt|-@x#aDixr|qxUX=f{p>u|HY!a5O6QS`w zpa}WjOq^W)PfPND4zc!9dgrj8zQKC_oFTUpI-kUGl$eKrGvxnFET$*G`!jgzlYUr= z)c*^KtNfn@eFxJsZKV9J@~`Ic%Wf}zEYOWf`bzoNi)|E7hax4)zg}yD_*Fv3!(rur z1o`Vnqn`5HtbBD0rW!#l&5#r2e@c?elKhXOq$yY}8Yp=daYFv56D#C@D)03q3HetR zJBC(9Pn7=+^q+PipUy(ugp7pz&w_G#S}f&$7JLu+UrO9bNYmUT|0g6)&rb3`yJP0u z?MBX5!M6r_o9^7bid+u!*B?8s^1qE-&gJh4;5-Br2jS9ssB<>G;U%O#4Vz9KlGlKg zUDb{JpM&K%|{vpV_Va-wE#z zC;2~*9=q~?T@izmfcnE&FW;Ty|2{0~+P^R6d@a;g{@;S6?Z$GE%m3Bgl+aoJ@55gI z$#(gFEqs43w0;bWn)3fyWaZV!&1T}{^8bgF_%_~5qR-w{{=W|eKf#}tiZ3Di&(ViJ zN+0?VHh@=SQGbyB{#DrZ-ow66-$80VLcZSv@;6fEN#OPl>~pt*!5?9{e7PI>SEJR# z;}ekd)kw-Jcsw2W2M~94lK;ijy^w!BmR2K6%Kv(3S_>teYpMLV@HaQfS7J^3kMh46 z`Cp8dQ2uu#6+@8F(EleQ8LN4AF6Fw@Zpi;uAXtJWY$Rpv;r%&D{?}4&_ws)UcB>7H zQ0xNJd$1edSGc1n|2IO3`Pf!oj}*?rPIVZ#j+5(~xw;MOqWb@C;JXuy8S8+|K~~n3HWq# zo^AX2XV|VD!17CbC)-n^X1Vsr;Xx{ZHiol|O-k9X)ASu>Bk+YGike_Xoe>GB@%g^hQ{9M~EKl_sWT--T( z@=$(mV-VwqK9c0;a>fgC`FSUtxC{9?j=k}NaC!+=uaRK&5lZ|-QGPDz zL4Gn8%i2(wpY1A4$rfPuyN?C9J`Po%E{w?*X3EdBESI167UgGfc3WY5_9^6N9`tO@ zLVm`=p^o9%cKY0prSfRu|AHPLz}mH)5d`UTe>;7?3w?e?{kDF+3mfu6erF%Z*fr@% zewX*w&C54Fk9S6kCn-UNpWK3@9l=n?k=v}&1D*$@{@RlXSn{V4r{`b$S3;xp$GnBt zYt#ECYy{qi^~zXY*~+da*dsL9J{Cg15JBCrtl2_0hIyK!Ws0f&$ZCQ;%%HrfwN_|7 zaaUm}7r`rS0ujW;_I%K@_^`*5?R&lD^*XnY5tfALXPA$N!F^`~Griqy{|DabWiLNk zDWs`uo=9=~C-zCSD22^Un%Jw+IwJ(m1<~GGv6N|FuyPnm`zz$%J)8T{ix@@^uO$EGqGx0?c`E;-c<)T1 zyw6gpgs{v?b*U1yQZ8#-)~03fUYSx3q>8cBd({N%V(eiq-=vKa8?$4zr-%G&DbpIM zgehIs%l{zgJOG?S{p<}hf}sQ%QjA@|4Edgm;Z90Q~nnLuWL~a zr@t8TKN|@2a9)apEudvPn77r*Pf7mg1L3gLg4bFzA<3lkU)2B8;dIFVX5d(zoRa{1p+Z?P5Hye7&2A<8_TzIy>#RsJud%nj9K4|GqHhkE@AnD=@--E?u2tCx5NYJ}G$^Ql5dK#WV)r7ZV-&6lTS(N{;b9a;+zk#3VZambQIc~!% ziWAnmQ~^54R}TvtEnQ}1ekYv9R@D&4GY|4-nC%s3HiASOilq4<>x?^^dCUX zoj|Mn+y`}(pPS*yQ&`c5Vdp$T$>&iAFNF(Buq&;^p7;Jf%Fj=L|0mSn(^+G9ZZvyYA6BP7zYk>Z#a1PK-k$2$K6Jrj)UQ8D^m%WQK97On zFUsii6UwS42hCVjqH*qI%{@BKXd{-$QH%a#-_$fVDunf0qF zt0w=ja~U;(Ntq=&yV(_BlXVU&sQL@6=ILfmYhMzVt$Hk05J<#^K*{B zxto{IEj_OD{$Sv54^sRB&mgaTzTDQMmBKz{*l5Uv5Pk~w{j}!@Q&>mzb26AB$6r4b zb1%o=8SAc-A^wgEi>sr}_RS2!>3Fkq1)YIvt4{pwsT=J3JEz|jN@9Fi9Buax^>vCH zT(ewzBHG8aHri9m@z+Xczd#$6Ha4vnL0^4gv`UGmy;Lm)!k@REoE_#Gv*JI7H?H>V zIByAmM+|M1xoWKVhyR5w27~SFIi#9QYFpitX-~}Ldy?a?XTu_%glBx!cm$!(vK`F(25R6IVcMZsKYtt)Kdox*Y#C=+!aAI0yVsLp$zh z$A33kZ9m^#@jnS(TtQB&p}@9w{)_+dcKpw${1d?c1m+MKO8C3N$tWNj%-6$}PHa;J z|4aBU1pj&9v!Db1%Yb|df2X12X2XByW7@Vei2qvfKO6i{2mh@J|1*hqUV49B5&vy` z*WU#GhZzIg)d~OGXd8+D@AGxOftJu7z5uT(%Kvj{?EQS3$IuEC|CjjwypOi!w&GY- z4Y>Y6!v7A&gEDmHJ84lp%2C399?-Zlj5C16e=XEm+K&Gso&^85LdC^t&guf%+`<1d zDDw?`xt0L`!@w^7uLA!YXh#@6&CZGZ^Rm6aLG& zZ-8>b|7mc$hmpVIDZTJd&xC(!b|SvYUt@%7U^bT-2y9SGc#-^nMgCtP|DVzBnE;nx zgRgX+{}-u!<@x_Q<$qe1=bwKk;`@@agbU?&35*_pLL=w7s2@z5htgI4r1LqxD(W-s zO{Vt<9j`8~6vBR3vX!e{Os$SoZ&nKS+WZ3LI$f==1<+B7{2OG9o`U_!(6s)lb@lYq zze7zNZ+c4WbIa1QqqmjX+tCbH0n@v;I{Yoq*!qBl9*@xteRV6_sN<^|T$BFseU+Zo zjWC!p_gf791t--^rB()!dI&+O_@2eLTK@Yr^DCicviIQVgY*_!zwBBDY>!Bb@Otb$ zeehrVTC{0Qt#@hgzp{kwuz$=L!qH7FNKcn4Ty%++R<9B_whK=>MvzW$ogN|2ITw{ zV>xesAgQ%(2meQ-l`E&0_O?!(54r^UE#iA9|7SwU)~fjLdJn;WEm^apC!bs3-1Pa}s) z!Bt4KhGfufBwx>ZxVJR%e>u5oo$oz#{{%dmw)CEuxBBD-|IenKb%55-P+FlE!v71Q=UElg zyE>HKniGiaSfza#`9G0AHBqHtTYo50pFy=D@WC0-Isd277pN2#Q;z&!p7_6jcGk(z zZ#-@3m9!}rS4vJxH|PHW@;Qj5<2?Ak9muaH*Q+X~KOIT4zcrSbV&~)675sk#RB?TR z%KX0`TjO?Y7Z2k1cNx}@C!qT~Xu}?Y|FjjI&QJVb*3N%h(3SarHto%miu_*>|1YF> zvo6(tXUXrWSpKbv|7S8g()xc3{J)>p@2jw~-dPp@ABO)oQ0_H&B$fF89QMJhvE2S; z#qv+5uW~OIp%0bu|59Q8%tc!|5mWLy-5EfNOg7epOU=*-F}1Dp7fuT{T$2}WCJtl|4Xc?mBJ?y z{PsHn{@=ho^~XamCbbg^Ds_g~=L5+)X%^Ve3D+sC@YKiuz5tFEcZa|I9eWD7wXZyPeMR)Wu=S}8(q2`^ zU>n7Dvh%gXzcU8{wmb)|dDX?*aeG;6Dk?+po(PdJ5lzI=;KkI;sK6 zDV>U6!M*<5zD<9pCVg=oInC zU$zVW%|PesfAZh{QCQ(hg}5S*E&0|$3xC7Aym!sXCA2Y|H6s2yN=ehz6h`yvfZ;-N zSOflH1uI1oU+p=UCj8Itg8vf<|GSF#zp)GcPk{gH88^xCzqXWhy81X}zq#;3tUPb! z+x|co{1+ARp9vS{!>6wJpFyiJ@IRd|N@x7;*|R&%oj}o${}t&DAj+XWZq{BK*$)|A#xi z#uHljf5!R>hZ#ZnA6?*&{J%y1A0YoDdm`_jyHMUozIbraZ90;hgW{};%tog0+vcs7y91c($lyv=}EsS z{uv{W9p9OVQ-Z2=l|$x}j=^tL*b)4m=3g$q5K*ovwHs&wiu{e|VK9y{!;<9LxIPOj zlQ|2c_c1EsTcM5oBcCXN7b&ghQqcMqo`>dTK5<03@qP508TpqW6c^j>era+lY4g(h z7(o~uqwomtzrf2let-3F^ocQYOQq0v4BD`?Mj1@!H_fk$X?&{HOT2vM(uW17v@M!KUpjNr zmo>hk;W=muA9AyVK-YbbAIcfn@L~Y2SG1rjRz?TTAG|#0V zK1z{!D0xu>V_Z3xT*tk&o@%>{vXohat@*I0hMq9Du(w)&g4*T!&!@rJ;ArHdbo4|& z+mQA~8m|PIke_C6`^r&2}dQ& zA$TAbuBB~_>P`RI#_L`G>A!Cs_AkaxVsBmbM7jQRK5a?=x$d>=w}xkbx&9kOiBeuH zb3K%EHmJz!_F(PI^`G>xrVb&U`ogsfa{U*zRXW5BWjUn>uJhMJ|G5fx%z0N@tijUI zXO2!7b0l}J3hrE#7}s_rJo-F6@mI@qNByV&cIZEM@(ukLa|E0_8~8L8 z?Lp4?@2LNx7bSe^E@uOXgMA$-H#kAbWj7(#I&UE5IQZu}yF2R`?nD2L;<@@y?|9#YuY(>Mt{Pj?f3A|PRJnSDyQx>!f8nvB?oxwT zE8_4szT`@D)X2~?p?l&xZCPaxw~s>7(wJ z^q(A3HhpJq#!#yAuW#_(9Q{J5ca&nsY;0rL3%0&%qX>QDw>`dokyq4N^@4fyOuu{- z!MqXAKHiq>-Z%u_A~w71Tg}*W`!g2(OZ7%@QK_ zzOa7ikJD5A7|$E^pI-3Rve19dw9r>R)`3wYxNnGl@y@K#dXVcsCCiZyJ%0uhXE+jS z{fb#3?pN#{9>S=+nuFAKW%1!iq&sv7uM{xEZ@Mi0IOjmg(JNo?mT3Q3L+esn^?>6? zYCmUEOyoD$f8!}BFb^BI_I;*hE2PsX zaR%3}K|T{aCj*yb434Q~SQ}ggWfo;kB5vqES0-_8g_Z|*(ilft%XL)3wFzeMH!)e5 z^;&UEXmXMW*VCVp_-pPx!KXHJ6(8G6Gbq#AK9cx`lKxwq?zOxaoL?Z7+!Z7ApML0$ z$1UMpV0>X3zx~Nqy(k4{`Iy+{`foCRQMvw`ncjEzGlYJyZM=n8By#;XKY3Km22XeX zZr~069)%WcBK@&m=&xhne-%%1{WqOh=A!Ki@bd~Tdv3e#or#~D>xOFe6m^P8X!P;N(%gDnu(oni%3 za21c-s_1M2M?KX#u6?5vTaQEkSs$9oL9e;^k~w3=mAUjQvOYRq?XE+%s7+;v-*j30 znF8lrcPQ6?qv3-xOcME z96y`F-55#|=KiV1xCV_@Fzt2D<}!4JZzXlBmDJ5hgnQu3SdW&+_{p1L>pd?Zf&rytz_a>(`HEJ_(iYIAT`7I%~xjug6jP=Q>W zpJC_<-zM^!L;Mw_RsYR{_G-F0Nc1`|E7yN(7`L5>)vgBk^&wmjg!2-ObN#oPoUGZ? z;kWHS?`*qt)PJVVQjMHVF6zJOJ;FB$|Ene7>W(|sJok8*!L>g0CH=RQSn9viuxN$; z+d-;zc2C1HiHqySwN!x+r_g}pq%^l{I>ebAz?-?y;X+1OHx~8ZKCGmxc#>hkwEee_SX;2Qj-qT=`BDF!g?)J;qv`5DeK5}< zRtxq(_1|&Q?}Hbi{|;k|?n(aqYCC%^^q=!)_0}B$Y!f&}0JC$I+?PgsvMWAWYhouI zWo&SYr|+!#PmWqA^gvbr*;-KlX^oHlxoU~27sU|Ljpw;vo@hTv!LIdVIPug8o*R)5 zTNHkcrf|6Gml{U>=X^Q!pSw8;qqWX?ZRPsUFR<8&f%?yVlgjm<*81tB58kT(T6y2Q z{@YG1boUh3p{l3W=lX9kCCy6EssGlI({lI``fmLs1o5YCmIxy|1|8|1sI%?7`IIjNN+#`RF5OXh9e)Zo4)W?f~ME!RGI%xxR*a6g= zd8hu{L1}VhFR?E|p45L=lHw#F8Of8aNSynd>@4cP%aO^g@O>w;Hj%N+v&rFXa(4x( zE0NSAc68{@(-oDb{Tos@pKL2*6Kg^rg6n=_20Ev!PQ{f zplvNJh~r%CfFkF?<+GBHsrv6yaH{3aNRC0Qlkct)H&DZ_As690)Fb__2fHQIvg?!n zyO^03`;z{9ka6`}pvGis=@C4K9|hj?@NnJ4(>ACZ`tK_8eT=kQS#f12^He^B^gYbT z#6@7Rk@En2gLebZcGBF=xJfIq2N3ry)a+ZJ{!KvZ*Z8I$;j{hs2B=eN|J@9h)(%%I zzlLAi&Y}NY(Zx_||J~1>D=LNl`(kml;a%{)d;Rw$&mU(5<3`T8{&ThYd${jD+zGv2 z0K31%i&y=33nMc>f_8V{%W*$5%+BQ9ui$^^zvrRL6Xd^-IHCVuO#1I-V!hBo|J|AN z-($=;dH`&{N=~`{djxv^68-lwym*3HDh1}SeXmFQ`8Az`-1LLu3*pXGAXuIBpZf`n zK$7ZtQqq5GQ>}I{1V^VDkZkqjDB{|(a4ov|?fP#@QU6VW;`;n7hnv%g*@RwpubH*b zUj66u(0uV*PDyudX@W|g^}lzIA@!g2Y93TOi@Y}gqx$b8AXopL0_|LzZUfM(|JJAW z-wNpDYG>-dZI#sKY8>lDhzlWIp zr5xX$^xuon`T?ZjW#&;m%e=49f8SjKh<%ju1=g(E!7({`N?pl% zLO*QRe-HOazi%P!HLQd5W$MIZjER1lRNqIBJkQ5a{rA29hrKs})3YiMzMp$C$xN0> zCi|XD*2%u_BqU^kumnih7YTuc5DXzCprVKah)_YqqM{TKK?E&}s8qpS>xQ+qE)}b_ zrLSA9ZM9nay|#Y+{{M45_dL(6&pqh(eedtro|*f(x3gT^x$bkWbDeWa4>B7s^xyMI z|2>b_&*$;!sn&lF0cS`3_Ye4J{Sf_k7y72eYDK$&`33NP0e>!MW~u+a1XcTU{nK9b z-|TD$y8@{HUPL}Z|9uPYp2Qr0McG*9vJJ^{{Wp-g0l&n%M*a62B6OoBDejX`V)A?jZkX;84`x+wrD* zC%WtQRDUmK-sXew`$}rmM)))wue%$8@R3x1-v(Tl;ypDA+#jNrxcAr*=ywoVzCG37 zH}cH(i{sx-r0Ti;F3z?hal_zJ1FP^?>TiE$V0^yxbD)a$%Pr{er-)ZydY(G)5Hy@z$Yu3!eJ^|zI~d8{ixF^l@UFpK*8(Nuryk%k>;^M%=uN*l8l;2Q-5 zJ;C>zcK-fL;_u%>?PuZdyE^dq?bP4z!{3_|e}9M+{t(~7r;``J_Y!|UmH7MX#NRuq zRiA^lFXF*9mOB3;SbmZ^{%?uD|HYh>UzPp^SpNgw)Z*{*>=fdU%GA%lDeLF$Aaixr z!pd+XnNf2WHQ9COPR``-hU{d#&#-M|Ie%NTjd;=xFP)v;$hiN$>^so)Ea)nKzX^XY zfr?AAe@*;dkbRhZeqI`uos=D>+*a0{lfV12p6Ca8%fXSLXko`y{=D~dT}l(brq9RA zdQVk(YsyF!w&Q->X%~4Z!B$S#`n@U^v`5B>oK{rr$BqRBwTk87ShnzL@9xKS|8!j} zt*xklIv;-ud$#tPqCt#fOjoO2%)kk%7R@1#7k&W3Q=ER5_XN5O;s#ql?-mNIQqG0#>CXgMnu9J|(v?kHc3u*<*R#;ZH$D+e7VaOQwAU_ROv ziUsGJI<~FdU7KIPQ5=6I-Zq?eaXBF-jw`;DAom=3>I?rJhZsefmMZ`4YrBhR(Ga6? zuFa#>(^Yj{g}ylcS_+(9JecpEe&CMy^o9Sf0OYQX)%@>mysk4|+I1a?&;}X&*J{z( z>#=jH%Ka45IS0e>Ic+LhOJlxqB~EWw&b4u#i|Z%5(z>=9?J_SVh=(grx!QNp;9TK( zP;W9VAICbHxpJT3qG1&6EN$TZ=nLfhcQmAESVSLx2(6po|7>!ZNIzy)(d4vLwFkN4 z`yA*#8*b_oTfF{P_&+__n=)FLi|FSS4O8fY$^UskvGFDFe-(YXCTu?? z{C}p8{QrLG2W9?$7w+AM%}f2S-K|(yRr>GEe_QI6o=fy!f^zxOh~cxmUz4Zt+&M+% zSspuLRB}m)`tV~)+hgYEU*5a0r&K8|zc%BD=W-yoj>z^o?D(e&XKF{YX^Hg zdCyBIy^j)Xk%v!UloRm+len&iKGNC)GIhWe&_=VD zOkDIZvi#_O`zE~SrLoV%Sv-s@lwL_Yy=;_$q9N8dkP_k?TEg5dTW;C&^*Z{@S^z9b z{IvxLr_clsLw2>01Wdvf{I=KYonHMxcajtgdiI*iaWE|aLS*Sme!w9|d@5{0E|01(EH3emtx~}(ID859obneF!AqoAWHnK85xm|Jo9^sAC8N|D}9QAhPT5Kld)Lblal!Xw05 zRK!V-#`sc&MM3Tw#8s=R9-)D&R)@F>&#U6~!`1X1nK4g&IqeJQ`cH`U2nbzcJpH?b zOAdv(a0Gs#tSYn~z%5ny**d?_d8}s`8^BsovK5m4*J( zFD|T4`fH1)^G4k}P0u>_K~yJrCGAFX)<>^s(6?F{clEpQpVb>%-%q`0rRnGdhjJ%% zLjT$S7{xm!ZX{O~{U?0+3U$KbK8$+j3biYr$DV=KxuQXz$x)PijnUnhojR zeV!)rCuZ7uiU$1-bN%PKdG30qwa$6OxFJ6l%t-#B6o<;ip~ znc6}B3CHM^Cf9#bdpev@|Bd2p1J)%aL}sB`@{2k2~Hg#Me0tayxvXETsTcXO+!yiweR{?l7ePFM7w zTo^-+v9G18&Fee42)M_Ri~4T{Df*)ST1c^oa`jx2L#|c11WVp9C@}-*W>J=_&byE2 zQtD0UKmGYyh^zjahJS*qe>D+*A%AnYU&TB9Nptc|hD3{pY*_C88C} zoV!=5|Bgv8kLP|K6dOVAqkvB7cOBQolruG(A>9XE>O>>Y**1xQs;o5 zYgPE9fos>{T}Ep4pI+=fn@`M*$e&)*Yx*!gF%N6_G)5G1{kIj&)qk#av>ux2Cq4j< zkHf=e8Na#ybD!S+q#6LP^gDB1RpTy)TE_sv@nE6;TLYBy@xjr{F7)5=l<@o4e`|nZ z8et%<8>|E(kT>Z0t$b7&Q1K+ZUPAxv0;{57J2|zI^ZC?;Q^;u$5FbxY+n~x0U_F!Zl?J$W5>HWE&a1*+vfg_?v@I*CFybn;dq+osImuR>?MKd+R3Hfbw+EQdWG+Gze5&Zb1Ne%m|K#R+u-H!BKObDwe^({_cMaoL>c1;^ zyNx)9iUCKgT>o7NsLaD(0{Kk zUCg^l_{g2ic+@=P={(+z$H(|aB)A0$RsWrf7g`%$Wpk`QblU#A6AXU; z`tLUM-_<}c0)Nl9mi6Ba(DGc$x*y8C3~gik?|%5Ogj#eq<5`!Z{~qA}5FX&6|8^1k zjdA&Za{<|Ok{Ylb)kC1z= z|MoLF*irvI1%2L$JT~H;`!p+j-^1VQkxAQs?b*P};XO-b)gdwD#;yGQwZf|#b! z*L5ipb_Y2fY1e-bgU4sc=|jYRg5O7rRu6m;@21A;VIBHUtY7G&|6Y~!pPq}&$j>Mw zeif4U&7}XnjQ8nN=)Y&m`tKb{|J?_L-$ea*1G4!U@U7^-d;6&WJ^)2#BYUmj{?BFo z_aR{ZC|cr!)Y3<(hby7S`=Hu)7!5uXKi1HHcR}eo{(BZ#{5lvng28*4@u2>@H?{x%NB>3p?|<}P30eL>TmLzZ zkpI~Zh(D`Wmg<P7^mf;+fYwyC?C}pLW8t$MJ_G#o;~bK2)m=Bj?8&Dsu7gxxjiT4^-eHX zVHF>Fq4iyfQeNDdI%uVpSlhAVZSq5T5FgWbA3{DI#SHljUu{RI98t^V)7={*&&b_X z7o?3ND(28L{PHoz%Y@t>w4*CAo)Dwi%DXWf(Th=w7!}oeq9tB?W6$+V+n@NlGKDKt zgrByfp0O^G)^(u``4>AmD(#%R9rtphr=Yy}-f;^@2A%&C>s2_G6=P@eHsoLG#7Y^C zmWpl2RB?ZCEt=Y*Y)!l7h2s&9q$&T}R2=nGsw(pD2%bLe-3M3hSL$QT+4XFde|NQV z48+k$SCn-uPKr2IqP)1fg(F3dIap%P^*5LQk-#~Wyc|7t2V+-=8A$s(R@QMn8^=KevA(c9lOs+51{!Mc~1YkVkKwdLP60w$5u81m9K;=ant|3sdQ<CpgL73Kaa8`DRa`uT z{I>vEE4gUx8cf^XH9>~cTbNAV%D)mj0V+Cr+PnO_(t&$-Oee)mdem}oev*Gz1({9% zdoaBu=N44Uzayosq;YJliS#`Mv21}F?p~$*Yh`Gp-{Lw=t_?Gn^4!CB3V67(O6dRT z;4_G)A^)>T(Nma`QnipWmw(}$Oo^^hu@LSKr@!lpEc402HH{qom`snWkus&zjGFR4 zA6w5%U|9mb%Sh#3%NZqVKOO)s%Ks`#(<(cgzGTS%{3I81DYG~I?>Z*y$axGoEB~{& zn?*Tm>7S1!FXev;IW56|Fysz^6$D7 z?$4|I&xYrXK+ysZTqW8SqUUh$&TqZRzcbwH>36#3_3`8v`w6>0tLx%SA|K^{0j00w z?l_JXcrdQC35=9~?a9aY1b#QqbNOF~MK0ujId((ke{EU*msiRE#w7ne&&Ozn$|3)! z!q1uX{#OCjIXrXBLiu-vm9r@+xUN=Dp$@1oP4e&Tj`Oi_PuU{_A^*FOv{RD&zk)Q55*$u6-kjwBT*_VyZ`>2bRYtb*b~z=? zgHo5kou1|YWVkmNc#e|t2Iz7E99xThD&+rqNh6& z-wXeiV;QZ-rneRg(UsKirI`fG&fPz&9lMzZ3a?if3=Z_N)9q z0iB=hApg#|8H>H^b=Z|2!K(Nc()Sdq<^KWX`Bhl9E@vd?wb&h=CYL|JCiN`x|74Q? zTa)ftfn9C|&)-YlwdDUfa%zQV7jRySHLRoje;J$baOOcj-7f#`mmOi=!ra7A7_K@66E;( z*mwVsn)c6FA^!?oegbu#U|hrb`hUS3mq%HX{we0Af07cm@^(41)E{E5{a^Pg|6ggB z|F5ujqw@b%;QJZ!{}!b6dgS)!N&dgyF8>e0gMUx*|9wjN*Z-0K|D)w!>w|yM->jUy zDiVwr79(@;FSqh|RXfjGla0;I!XF-@bNwEiB?6aA*~?_mW$JYNrps?C62n{<6nyZ_?gbaSB>~`21>X zF}Lvft6hHB2`$m`^mG*>ZEZdGX{&S9iX+taV}!zT!}ev*w{{5YmlhiR(S!c6-nKr) zwS#sI?G5@*hW*N3p?yT3)DB9yEd)!Gcjgpl?K`!DmIG}8!GHb9^^cVQ`VZF*!GC?b zh1<5RRuQcn_T!2MVU_>x0xkcwheY4CRt{R0!k;*H2GZYC{_E3Qr2OE&`+aJ8(5E%$ zzb)(9A^1PG%zwRSwNbdPaxwl(FL$|_m{MxFiJd_8mo3JBSKbc(yOXFsvi2n=^0Wy5 z8i*PE*MC<2JBwfbPwA!CRH2LfchgvU#8w|&Zh6VRaHqJSHXY#%afph{MWuP zyK}T|?q?+a+jG^6a1iN+K|%R%o3M5mL@!=Xz6G?!^}lZBF6#dr+PAes3zTZ0O*S2R z&m@ml;O;B`7n62%;{Q}~TAq42i;^iU#^?JIHzG3kHba4sbKBulaorDkiTQ0hHJ~!3MV3^ z`^)@aN1Zu<7seqZeSV*GbKEd6lzLi^2C{NE4% zuPIQz-d=kc=Rb#0dOfdZ&?9nPw-adh7w7-YwB#4kp1%~|o;PuIF*JN@pZI?-{imq^ z`|%^`3;%B{^Zz-#q4rY$<^N^y|D*IRYKPmX{SUYE{|lsfJ$;>*7v}%7tg^PB{+RXO zbpsC2EBZcOL7!po#%F3556pj1=KphefIOb~e?8}~QU6^VtycIk)VdM={{VlD&qDb- zSb0qSzn|XW|M0&S_3}PPC0@p5^e6IXap&{ssdRkr+q|b@d%0_R)A=RO58IfLn{V>m zY`>YmeFneDdGLvUwu>FdHJ2zOVpw{-wf!7@4oC9xU`yH&Slji{w$J-Zc?{3ys^7SW zE#XRf+vL%oig~v&qE>lttK09b?J(hUMq)Mm<{51)$3SyhRnptqat@L$SXXe0F}Vr^ zj@H@2bqrBEw&S3-PxBniQ~b>(W{^3an75Tt)QsnsCwj2vS z&K}B3a9quj#ouuvXI53`-;Wd%Xh{s`-HbB+BimDxQEDYt{fUClQo_`fSb zTaEvzW&Dqa3!8~`0<<`#D*wR$7{2d|f$cQfDIM|OPL7Al_;2I=ZY+t_HE=whpM&|X zoPhM@_#f_o|4wXWM<_GL|1cKjoI1+?Zs>9aG`bM{4`GMC3cG3Lec*o)IbO=4{2#2! zy@X}=626I#f!WK+OZ@NTi&shiB>3;4{PzNdD@LEd_2X6V-;C9JBwyGMfd3<eb zeFy$*$6xgj9?AM$KZEyYXZ+s+{x^5P|BtXeSMxvc|FbgwpTM5@)vEIU|HeP3l;^n4 zpYWhi$Wv-%iabJ#7Rx8TD%zyNE|vfKttk@1K4Z)%J?v^;cm9rbpPRk=fLbl>mHOB3 zRDAKePgQvub`8hI#UQ+}OzoWzI~!tatcsqo6MbS*paE$tY)>z(jwRSI~8 zM*oKR78kKm`Q?qTve^3t^DI<;nQB{@^s)&XhhGol$M-dS)oP~?`dgmgK}*&)pwE-I z)K0H&l=cOo_1mP4FsR_STHf{^{BBo#d+b@e@`C_W! zcmDWjzEOI=*jIEWxfU`lb^g{0wpn7nv@L+(zjh{P#Pz)p9lu>e=O9H|5Bn>`r!Wra?$%n{yP`U z7L;B+wS#K~IM=s@U)Rc1a@_~RJ)Mg2e|DMwmO0@i@_!x}&!gnl#Q$08su=%man0oW zsmv{al2f7Ld~lfy_Wj7SR&ei~iL|NY|1$VLneTY;e?}qx>y5G?@qZ@g;C~A(K0Pv~ z!q-~-8-xGCDr{=~XuV7X0{2A^{?7-J+Wc>Y;*RidfO{LDg)QMp z{%>yQ|59u_YZ5(b(QhrKFGz68|IKCoujP6r?aD>9k^}8Z>@cqXes<#eYM#jdGdM5g zs1<_$r-8+AT7cUV|1SWS^Ai8huaz7sRrr4y{NG7CG5CKDZO)$kLh_7P;*HUn|L4-; zE6)E{CjM`vWjK*^7bpIoM*WxnCsR!C`akFYYvKQE8Tr2i4CMdCV0L{DWH0BDcnn;G zmFDs?|IY-UOOS_cr8f9~S}!T%)gQory*x_Tq)LphpGzGmF}mJ2{yz!-p9Is_Av5y- zJoaT7j-BoR`SczpvL@zC#_gBjF%bNJ4Ld))f-!jO|8u=3=50s*Uq!mFl==TD<{3R$ zGyO_ZIB)JKP}~P4j&gh{@&7(#@fOne&c8dEfAl2Sex#lM@1p*HG4cP=0{nlJ8uwo6 z|8KE}$^XB{E_WaN|2r`IPk2}>{I}u%hq6-Jtz};P8C1zdgAItf64J4uD{Otn;egF{TS!>bAEy29FA827e?1M6~jk3 ze!%t1%I`eiRK6D%@i6`r@(@?=#c4u0{!Y#qfKy(t<(hcr#bzcEmonNe<(YYU_VC$_ z@hp}78sdMSXXSF*&f?nR+&EIXHJ@DO#k)y|q8$V&{%rR>6=Z!axu3r!Ozo(x_iuzl>wxkfx!-nups&?-1HPLRoL7 z%ujH9n(NPUej|rC{2^yyyPM}v1KS5Vz}I)_`C6_w@($W08c3(N^G+F;Zqn>koUQL) z=XfR8#A(~bbst0GHmHdo0p!3g>o=frQ17F-ZGQm_pW*l`l752o3XVVJK*lvmwY{&{ zb?@K`4AAuJS6|;Bn5rVTeHfTO&hZD}eHRB(nrH~^65XJUwCeDDdsPNrBGv>%IqT9P zZ2KzjzeOG&TUExJtecgbD z`p)T}pxh@Z{{x(#=6o~fy`+CV*KgqZBCdbKaRp`k7ss!;ew_1@oS)*nk@F_bn>kCH z+c;WD`zFrI%jtc#kZa%b&iwQD={x;to}2#{%I}TqL3+zGjxbn$g2(iq<{*BT^jDFF z`1$+x_*awP5e{J~<0Cu?AIcJ*l)vyDPaK-Ysr+r6PbnWfD;khN^#~cKs+*JwRhZ94 z9fl)=(%CQmlQGh`-2`xK`y$W3%=vi^zsd8t=lh=8Cas*eaKD7(R1TZw9O)VNZOz<| z@#__U|5f=BogjFwM%>1g8FFpl0r;s<=GaDqTb*c8E zwfOH>&wmdYUq$(cd3S{KQO*ZA=5eh&ALKl!e19U>9^7|$R^WYi@lzS){MxUp?%SXB zP+s->_Um5YYmd_nyuR!3egO9z316hTt$g^b$6$R)A0fYS_5B+L^dHdJFrabZz=nZ? z2JsahGI(%P(~u!Uhc*pu9yV;)@ZrtPBSsD%F>)0DrHp^L*j<=ReO7n;Cvg0hV;c9i zQX^*tcWyl|y2wf#Nk|IY$A8_K8lbN%E-SQ_}Yw&d@aJQLZtsxTIas^Cr&f0H4Eyw*8!ohx*j8Hom&147+v6 zZ*0Zbmm|zGLfbH8;-9(rIoH47pq*bD%d>GDe(P@M;QN)@#eTO(@m}~YP57cX{?b4&~u#4%&gzDYez^;Vi98C(hF9GLGL@D5L3DvHt*cz>uaf z6S~X$F&^Fx3~%N9b`IqioD#g-xqctl>Sl1y`IqqL9p=RN&db*uIbP5GEu3%Q3|@&w z%076tE#ka{tKi~}z<&u`SEp5{se`0A^`*~Jd`b*E) z@QpiS_>30xuq0U>!1TLB6GRcUaa@;L#CeQXQaPAk=&vpFFHc%Nn=h)caUhMnWJF3W zy1Me)liN{?!$%AqHhTQH z@#97hA2VXe$PwemELgaB$+G1uR<2sTX6?H58#W%dxm=>mB{{0#TH#ap5 zY_1)@hdn^nvI7VA9bJ6M zq0^6Cb?M?mM^4##`j*{sw|nymOLw0?Ywzw|vySdQ?(B1yExMF-IJfLMbm*#US}r}Z zZ_hRRT1qnx9J=)2wR`uqtUr3q-UElOS#Aj3O zL|?P}nt3e&!{%!*ThQgnu6;)rw6x@p4<0lkld4$$r^W!CPa*IsgT_rAji*398el(L{2djM^j-*Vt(bD>OidBg#+`SZIzj!e>< z*A6Om&!Od29LjU;KEoWSlwbFmtte;K{o9qjzFpPp+tt0kUDNB^wdJ?)se8bdF3Dr` z@P28H_qmw&lz&d-p5Etl>*;+?xt`wVwCm}8PQ9Mq=k)98eLDrar_Zt)^jlVge#>gm zZ~d~IfIXC7gMQ0u&~I4{`Yo$LzhyP(x2y*JmbcR{DXkuUY>Bl^=Xf8-FNlO4taL2L zc^sGf1@08=gJ~1^tB9}7EN^0t%=(XL#JWqnoJi3?FQ>KzUz#$hVer8E#vzRjG)e{! zY8W)AsiAT35E?BJYsg?e#$?7Y9D!e2BD|!jAMg8PNA4zQ*(6@$paG)>QfR5M!Cx99 zb#-IL4(i{3XhRcU{N{l}hBl|MvPLp*(gApHTeCD6^GwNc+M<7p?%Q%i7QMjNov zm|3USKI3V>(cQm@*LeHTZ=!{S>Cwh&$N#b2G;i-J(^qh~6TkK3y|0S~={`*`Ixe>n}vAHi}F( zc>18p-Vu-UU-~2T$>^cchufKYX?seSCYxyfc%kArGgkCc*@UlyReSA;@yqd2=8dNoDkdfb*ccAx%1`8|&_~dH1h*@9u zl8h7a`=@K$qxuay*JdccvHw%Vk2wIYS)fOFC4THd;$92J*Kk^2nwsLMNJkO3RGQXJ z{L^_puC$lmO(jGfKTG2;D9z&c#AI+;R}!Af(%X5=Y%)H^I^utW-^odXEhwGEb;N&v zivMd?@DA;1oXfbrqhuBT2WH!pO82KHr({0q7{p68=(+o=^rFWfXT4Nt>Qy|E#>Im3 z4=kTbmqNGz#IxEtI8VZvmB!bL-Ey5t(m&-{JAEEQE>s6+V-^XP=xV#pHBnY#l@sS; zIuE3Fa5Wg$v2}K&kh{{YD{eXmLOG}%V&;Q$2=uvkrlvDLlzL&S735e){>zVeRwTWc zJHyjd))?=7lGnppTGvu zs-LMD)DxY{avnmF;QBJ|Tjw%6d&By0`6%?3DuI@5dJ4h|HhIDsF zI@cEuAMx6aZ99h-OcJyod2s6|97z>#d>D2oKe~WKh8?CaE__Yu!rkQn6oq^D>@7j)s8OGWV|BsaUe}Y3;HG}(Rx&NfQWKJUGWaQVCft?LsjQ^97*5Neg z>q^t%TF(D*5^=r?Cn5)2Hd;=xR0gm ziy7oE#{cc4?a2S_6jPM{7cl#}4chNwa6ae%h4BAYXi}X257Sn=gEDje-%4G4NcV%9 z;gMATzmGe>PiQ6XXN?p2|8DAkU-|FM|D6Bp68~FkmM)!kluj%2e^=ta>)*PLb5Z`k zG4X#N+!{t}SN`8sI!aDA=%!FJ{6*sb5mu9V6D~aR|2kYG-q1((zz!{d3jRp#Nr8l(qg9rTub1X!EzG*9(EkUeCD~DSf+|M;@fZ>AXNRq~0sr?{E9ZW8 zy80~ezm4lhYa!43&z739fd8`{;9rydbs_y>5qa+=zl!#3<=5xc@8Y`hzH|CYo;}B@ zepAWca$ZWv`%0#__2s=s-k*vm(N>RlacxA z7Ynxfb4a7Sz##ep&S9?ff?ToFzliUf=($A>_So%lvhnPrL<--CXF%ke{K}S4SS6wip^Phgt-@Kdee;1IFA6E}kxyE=huc`9oW@?4CS$1J}p zaI(MQY7Oq}Vy^Zfq^K)Ax*~He8ZEhJ>fo!Gn4@RQ6@IU6O>1HDt*b@Y=lAK51c7~Bp%Q2D zbrmJoX>tXGSk=k1>BY%ES8TG!@9GE2l(dW0AF5$1axIlz(^UHQ=j`gHmhGBGuDa?f zpT6^nvFcL`&;GR-*?YI0C}#G=trf0IDju%e=qjDsA(VG_7LZDfJk>g8eOGFwh*Dtx z-{*Y~N~QFRJf)+$F7!$0n~+T=&2JgZa7Egpu`7@PN7xU0kp~E8Ypqu4-<+Hv9 z`6dKWCj%Ba?`kMQY0WT*jcZJJ7|WG5v{Xf0WzSl!%`NO`LL9x)(EnP+tT9Ty@-AIm z?Lss%ix`PM7zb=a(|DdME<$6Sry_t07YYlE_0sU4d+LQ7Wijaue<9}%kGYdH)#sK`Rd zhWt?4L;s6MgwX$CY0qPpUlllMH`ChVdL^!D?2gB=4vG7wyI!tVJ#7@OAM9R2mK^J; z4a3?Mc24a-q5qB5K#rmRN0M$Zce(y|wG{Q(NXpZ~*TlWnv(W#&?W5EaDzVGdXmT*e zYW=Ua%k{tOujTrGEZ6mEjSR7<<0{wx%|K%=jZi@y>`Kw26K0-G@9s*tF!F8`_l{PK z2e;uoA3%?56xV$XVJ1avV7Ma7FJiZX-H4h|0C(GShhW8ht(?jee@PT%DSumA4S}8-06tg*I8MAold|6A|fbt^2k*4QQ_-TFBk zETw|_Mk$H<={{@Laq&=BXm7Os{;vApHHkCiJlFr@$ag}rUa0@a0*|4AXQBT`P!rTr z%Ct7>(ZFSWma+qZa5T~_e05wY`>yMwc5pX0^}jomh5m2mtkr*HD!Y!_WQvy(bR4Z7 zD;Q3m75(pybd@lIOUEghAP=+=tjBo>{Xd4=ivAy6e%T)g-5G8I5KpFz5&UVfHK_lk zO>3J{G0 z#u>bK1#K-W<4LFfpTYB)P~Y-G|I6J*o);VQtH#lFwcTUSJ;yuh|5lz=>;Kun-9oub zk%cMzE@aeq2pTW+{{*g@d224Y{&&^!(b)F;GrHhDNUrlV3ETc$=rM}>QN&&jUh{e0 z0=A2i6jno5`#SXheA2JLb}aozlE1rwWvpeh5?BXQcIba&ssCNgb1mZx6Tu_&|5PAa zOU$Lfv<~@Ljf|}z?RcP{0CY2W)4&_`|7@P(_Q2DrU{(T$Iizy*;-%?-`$5(|TaRjy z*r7lzZHr2+G?e#wKT3V5zEzj1QEd&lmt(9>8~WeAmMvJlsUJW=q8HuOlVO z{4ipgw>rXDeGQ@i)j#eG5&GY9+|N+m=l+L&fz`7kfy6afL;sHj6W5+on+)K+Z$kgO z*Fs1AZ(UVS38$@$0o=R)f|@~1rFJsBRQ>O0liz>$cO1l(`hO~S(~;Nda99051qhXP zS9fzS$JxXgN!@hKGA3{E)@OrKZJj`B_or0q~E8}-3sY0#LNJp-|h0y;S(l_%A zWZ)duEL#ud7MD)pto}a@_p1T?9t)pr|A+o}_5INQJCN$F#8v+L^Ktp1m;rzKfhgsr}bd)pVs!`()n|1SFfLU>-?{=a~`(Esb8`bltF{eLc8&h`Jr zrAi_dOE<|#7qD}WQax{*0 z&#d2l3*#AaamB$F#;}%A+J2}o7bigV|IwuXPw1fkPlJw!pxCug?i^s)3U?Y91sT8- z_5bOmS9GKQck^Zo`u{Yf=MqN8_TzqckW|OPx4r!RF8W`cBHs2O+!Lja-)R4<|6Q@$ zwV~agR!f(?%w{kS{qI{fySuL13vpjpJt!*r-|wBhA!AM9jibtb?V>%QmQ!a~e&p3R z>g$#`j=!;-bN%ls*eyuRTn_br3#HFZx=svc5jXU|yJJqH-nlQz6k;^NC-a6 zD?Cb~{Xd^4>VJD}uCX|U8r)2L+enV}hW;PNo4$r<|L6MuSY$~3znIcaAlH+SkCT9B z85(H{(zF%mxAJ@xwft1#jAZn1F%q;TwKbY~wk+xY&A@MsUJcxvpn!X*jzlAjN2_fi zNB177L)%Q_joNKAtqJw8?ZLi`!E5B-0UlS7fzRlt$!|2;_a zNl5ZSMJR%e9rsC_U!NmE4A)z#3swRB6j z`u|$q-0%|g|K)IaKcj`0mG&_8ejh6#s{i*gp7|cmuYoV8F{Y^ge>;4-9GI_Tb;UNu zW<&p<3kP!je-+ZB{@+cG4>2Bm7@5i2|0~f?SCeiPn)FflJrnwzL3yjtq3ZvO`FoV3 zuc6ZZuciO*1peES{=WgvzZ2>C5;CR!e;E93VsdhG>C?b}1#rKX$+80&gMEx~{V$ZR zOgp#S36ItPpD*kG&m!#?vb)H$N&kNw++Ldgf0p|CFm>!F_ztN5zlit1kCB7x%KHCP z)U4M*&70F#;*0R=5U~CeqwHTp{y)xS{nz1{dPCCx?*k|G|5J8X;|uCssD|ou3klLlQ#o7uSLG5lG7UAh5oO! zw2ITB7Q%JEK zy|bD6a$?dd>i>0cZUprr*Z;fFv*#mwyOaJusa^kXNAvYH3V^9M z2-@e}l-Sp>of`C25{=AEc~?sQdFt5<>;tR+knR6Zq^JIT7>Msme&n>5vRwcFk~g{j z|0Ayd6Kt#X|05xTybk zXBGYbGpO|Svi|=s{A)u0&&>wnakDA=I<@mpS=vGU|0{N^eFmBNd-Ufok?XP9u1x*^ zIcnx#rWVD@(yZ)iJX>=8|4ld?`hQ6FaVFt3XU*B8{3b;E@S_GFo4%-LquX~=AM4<7 zclt-4rh}<9a5(9oZAf!R{c{a1>XpdbtI$6uB>i(*ulnaYFqn!iebw(t|GbO(a~XPm zHnKT_?~3~8>K^pZTk(6l4mp1rGW~k=iTdYLN&noP^v_eJ_a*&vfbaUf>{WJzZ;blq zRn+{7{yD&X=$`}B{>NT|{&|`OrXEM~v_D(`PruGr>|=bH`emVie!wE3wm)05LrB1i zY;0*orv90eJy7}(f6@N@U$mIiKgVXd{u!2q{`nw!^3$d3sr~)3^;zhjpYpx973u#@ zYJX179z^#3f-)~-{hL0BPKvq-tu_`pZDalL7m%O7N%He(4b^_h z@+3b)ex63IKgOHSBR{@<0?OXccliD6C-!Y1QGOmr1I(ob^)=*2@2rUR0DHOoN!9o3 zIyAw%lKeajERk1V;m^Nc-$!eN{A|g7RI+wH%S5`a^7BJr{4%|UbXZ}T_#dvoa; zwD=j*QH=arJ4ECdBU9nS5G6)#k&~VRrtQb!6XSIb_31&pF`ls;jT*p}<6>dq&lm#3<48J@C>HOgIA^ws>J(vlE(<>^1J+;`)BBp;@)K1 ze8bA4tYP2##P|m?MR2#)fm}U{vDlk1lKVM_fb*)9rf%Q9M`SLzt%NVh5TD; zF8|u{9U&b7G{%WCwAhSKZ?tuFC;!IRLgyHWsp@D)^e2V#uf5B$KdI!-dp@x)xm#b1 zBb&Q)icycQ{smIloMOaZ?1VU%{}@Nl%sZp{GITU`}d|@Q<=CD)Hep zWm-qyt^1(?&DEM3@~^fqMaaJv*{=D!(~i<3WL^u6BjoZ`*;3yqhvMlNmy5`H=QxdU znAUMKpL8exj%J&S+;^WJXQNKwZvf97y>BM19JcInDb{FmRsQvP8PDNPMk7)g`oMG! zAr&G2lW3PI|C7lfc^t5ykkAi#&v{Bi~Bg}G>&%I1ai<~XmTq)MYcD0(3&mqUq{%fFWP z&cRukj{hm0YB(iy7}ukTs|t26{?!V~zuX=IH5|+H&RKW;h&hY+lZdJOJEGb-ID)OmL?eCvaUAxjSMfK1 z=OeKSHN&+Q{M@p1`z1D{CtAtL3!^;0C^4E_> zJ>|Dq`RW)=Q!-s?#c@~Pbv7Gxk@IB;zIdP{TP4koduTPwwo8*6P$IQ9giJY&2 zZ;kXe-MM=Wxg6qe0CrsEe>=IH%in(BJO~sA;L=8@b2h!loT$*5d1wFo3a~1NxCp{a;lZyPG*{%HF3hxgk`9F^y zyYhc+8H3}1`u$ih?@RK3HK!Hr&umu=tln4XbtdqJ(9i_ zNm&DrX9E8~;;v2dzm&Qc@~_9zT4YK2-v~|nK}qLYD*r9~%}?@`SkwNa{BK46m!c(< z|D8z1FeEhe|FKBMTArOtx$d+Z@_#%KEW;8unzDBB{+uNL$53wf^1lbW)h0$LP6N|B zu^ZoAdP7JV@pCD%7`braS__5U5fcPkhVLWZwvhdaO635D0d z8Rh@eN&eqMTIK)iVcPEj#dol_Zlu&NV3Sx@`b=5=pCkQ8;M4Vaw(aL1 zW4n4MmS5UC*(U5eA^-PqR{pi)R^)$BmdpPyu;ShYj|OGR|3k^{`-5(zvs7B0eG+KZ z{~`bXffeirr777Vq@yu=Kc$|M{X6zg<^TNbe^-_7A=|b|4Hh_pTXNJ znXT73_|?kg=Q%3WtU-b``6N0 z*|$n(WJh@a%B&vUatxIFX{X#f-illt(VvdruohIVP2*h`QgqC${mwp+vFp;4{4VdU zo0o5V9`B46Pf~&!Ke+`*JA$E}Bez+l2Rsi*{k10(u;fo8PS3yguY^YHk9iBP*QWPP z*a*B2>y@#*vXxyV*dsL9J{Cg15JBCrtl2_0hIyK!Ws0f&$RfcWW>DVLS}U}kxT~;~ zi{OvN6w=f+ zPo%j06Z<4ul)~mFP3+ZZoe=`(f@tr_vFj!C^r|9jN}^cXAM-k=f%owwdP2s^-_^=p zxd^*LpTcMS^_G zc&MjJ|s4kyic+Uf3)EGKOL z^yBNO7p|cq|KosQJZ0J!tR05a{tEeb&*uL0B1X`|tH{5(=o#5ep346i-aAt$@3Yh@ zAuO{}U8+Q_l*`(dwP_i=SEiH$sbVbkUXfs3j6KZdo3v44V|J|e^pJloWm+SZFr}-w z{11W71Hn1uU(175TxY&$tI#SFx*_C$BxO6p%)WFn`IP?7bI~JnJUJ`>@^~CMJ7dL_ zpvETopFnwD>4`U#w_(GoMWgYwot1z4iP}Fx{wL924gH_XzaE3m+GwHl(X?xwZB-;_ z8Jm$(4x=AB7s%#7gNaZ^`JVIM_GGp~k{#~m|eW0Bvmw)~LN0YOwiYf7~%cJ}|>qejdTpuM6 zdi+uTT{BRtrw8GG6`TnEY3r}`rQQz%0(|CKgFe^ZY%seaLq zo>4CUJAiH-{pls7Usaa>)yVHwTF|Y?X$g;rkpENY*A;_5m;Y__ad!aQB}x8Q(5o9t zuDSf5igZT%XC;=Z|5jMBW|L!FJ=aEA_J%_zeG8!YR7Q& zP}cu>A@V$^?vCD+O;<$oL8+D6W9aC{6JVKGuO5Du^B`eeAhfpbOv zPr)9f*VOV#CcRt@$3mg}pASV>((~U)IhRBGad3Df98msGqh~dnc*_4CaNQ4o=EMCW zLHRf41ZYt$|9j~zwnCfNB>6u`ndj4YFCnYS|D}|-Z^6E&{(qt@|Ic%Gm>j=?pXg3J)S5YN!Yk!naP)HG zh5UaFUKi8<%KvlNRa$}k9xPyYVfp$?=zBeReh>No5w@}2l>T0NzRLfdeU|^}5MYJltD$*h9%qx|mxS1q^8;o+Jj|9VJO+F_5CEMwWA36iI>a&xzzfT@dUc58~MK}$^QYQbsW6C2l>CGApFYzon`rd1X+3t z3()2G2H%Enk^aic|EJ){+p!%f|9^>1Vn4hoD*x}pg7YGnz8||<{{ukvTda4RvkSAoL;v52pW`sRihf*{e?6E# z0Odabrw3=n<^Mt`*#b8!@^f)neon;#HKt^kvh!9@AlSCIY#iMa!4m7lwz zj`DLoJb4l;`UvctS5fkL)WJ*O!ZPeitFh-j)JOUGA@Ki@`g=NS4A0M|XJ3Q2@9UsH zm7jNGA^i{>IR%^J3hal)^yl}0>_Kc*(&ufdeqD?%c$E6}=ZQWKmg(~-82+@1K0lGFQCsE*>l+6>PqXg5t;P)dTB>?6@KsM;rBN^dtJ7ybU`M4F3GH4O<9rr!_H;Y zxH3)LRZ{x}4SRt$gSg9Mhuy$u_MNmoX#wymLf97Ug@t_}Y*euhLBud8+k#=cGL|-u zuo&6Hu{Z4D8%I-(tvx^5kB-zkgFjz^z*dMoGFx&6A&dDbwgJQ}V9n1t{^o98KDYF^ z&ijLbzdcCt3p|6o_W5#Kk5&r%lwqSG6GHeY*!R<(BTQi((a*_XiX4CaP|Up=e`l<_ zPKNk9DlD#!HrqEd2&d!C&J}b9s;xTlx2JBf@9&&`S15_`VR5wGKitZ z7IG}+5RUK)2)gU_FcfIDj#TisckB#2M^iKC+K(&O88HO@_BRIsMc_Y?r>*I&qwOoW zb7WQgXOO!seLXCur5Fo=%{g%;wB{DBX4Cp(UdpYT7Ec;}_}*Ou|$&UgKG@IS;D z*lC^czlpYy`2Qha=U37a+Qk>(f#Ux)zCZ7#ZMnTXR#gYCf1L1t z1LHv%I`bX0s2<^{;J*N9Tp7k0z~X-l)LGt+{}P@A|Br`?OVgayMYOqt|7TF<>-lmm z1O5kqUHo4T{;#ARVR%m`{Qm^}Z=whDPB;1`^v_l^S~V7UM`RNjwfVo9MLOUe>1RNo~qdi)8Eoadr`Fl`}#>^*((U;A3L zX-utmY4E?cjkcQq;X&s2)33W8X?@}UFm$B8Y4(wV|4rpKKyMi6(PsN%Ecz(;uYR}9 zA^&UJkffM0XxquLqG(@)hk6kUyPoL5f2pp_2QO@;;6KnC=;>X~f7?b)a0%`S^vL$5wuWbWzeu}Z2w?CNF zTDOD$W6{dB(@T3>C(Z|52K|=sJ(T~mp=4_z{=42o@Lx+-3uz|uyMm)H{Ev0;+1f~Xz6(a&$MUb<>7*H{_FSyWSHk~2W&W?nqiI|3iFvC}Uhw~H+FAQ({S2oSdLjJ35PF_fGrg-r>8&}5 z*p5}&my!RI`BM|s3byr!BlQ_n8wMYo0iE-I8hwFUVJYRv|CNdVi)d$^0R1M?mR?Pp za%rvPv~+X+?<1cBSUS#w|0e?ZmE?Lw&Ge@uY4*3qGgIt*{JMhwuZJqGPf(lxufW!L zBDRZr@%y_JYsll!{q3}255oT&liyYEAmsdi7!MnL(w5NfjQal``2R%jiFx})EG5DJ zKZpN+llcEN<_QP?zgjc>YP8Il)Gl3^_`jl^|F)oO^Z#txo5z*;zY+dlNbhDts{hWC z-&M2x8x#M}WOk(W{|5Mf53S#qV`aUy5dR;5|F5LntMN#x@c&utgI8j?{p*_LpH5%p zE-XUttK$FD^ce0*{Qt|E>1Sub|C6#=SvCJBWq77#JF{9Dtfp5G^uIEBEnZVa|1*%Q zTH$OgaY6qZ!Qz%O{jWl*i_w2t_6g|rE4=ok|CH<}V7@3DoJs$G#F|aD|1Mk9GVN7<2UEqF#{y2`_Q^5b*(&9|`U+h7CD!q-akj{T8#8?z8|aFEtU+vlqIdlDZP3S|W3W9I_`7FM zcv4iyaAubHJN9f_t1JH6!fH4e(f7jEr#47?RULzE6x+$p z*AoBE80ZJ@dW(U-t3GxNel6_r*xDBVxUa;SliDxJP~hKLgNnai!3$Dfe?~X>+m4x! z78U<#v;#Yb3jW$7JGZc7bzNIu;yUb|Mri<3Rfw_6?tsQx0YJ?8`Wcpvv>F5d)A^!w#_v|X5jTPVZCLWIqFYk`waDx8~EM7Ay|7zM?9m7$^T^=dJ{{i5Cf5+E&LJR+o zSzqB0BPjpY1^&qY8|42U^8ZDb{Fi5W{(o0GoOR8=Q*q^6HEsOm-wyS(M}D7Q#q&z+ zcph={cX^shj(O^Mljq&}9Jv^`5-NFk!S8AQImvoLxe zqawZ)+Q>ihi4u5`(t550t#9FZXkO+MN0b}iN57eoe+5EuvF+}cCa01%FRhOeguyWi zkMRBryo}@bR}V*@7$dh-3Vp|*4NGg3!E}Dp{JNONr&_(l%V$1~GV*?Vv{OuLDdJ#k zA@u7IIrxRs+9v*Sm^!4O^7RYIy258%{V2^rTacc;(lheZIwx*XYRIZ%e}0{%U3hhx z!d8Pg1*db%pI>tE(n{sG&iu6)1*L=6e)DtAc7@Loyr8naw(>&TqAB#HGbepn<0~4T zgQhT^K5$|e9@H`38TLSDsS0hh4uvkt6_1z&Eghw(lospGUpXGPhoGL;-{7@*#VD5; zOIcTk)XwM}NMYCJBJ|3gZ5iPW4{Y&Lt^zM(NNX|BqgaSzWKVphezcFIc3{wzexVD* z!F)m^7%P_+uR>OY#yDc^Gyg)?q(grAH1t5ktJEITm|K3Xl;Lxa{5M^ef0X=qubf0~ zazQxckMHsra>OUb@~QCxGi}XLc3|VZk{FVs7BEHBh8!Am4QUO0iI7V3TnXZ%6q$#T z7d0@(m2=5;+*|9Zw#z6>nKjs&4|{6p33Cg3tMwUZH zs9BUJ$3wlgP7Af8t&Z~t6>MQ!3thR|IvivE(eIJI+GCVMYkpH18uylPRKgsB2V&t` z+SaJv^q+0K-u0jU`_^IqV(cXL)>Thb>p$nyR`j3iUb}v4c=lK8zaf+;<;61BLpf)I zio9+Q*3Ml2Ne^r4Fw&_nT)QCGe^FbdL(EW?Q+nV!e?9b{t8mAhccsM|EDe3;=!7vx zbLXny&P9oFZAZeR&(jlswM=)^fBJ8S{&Oea(0?&Uz*)lvJ*q?hc`v+yPgB_*!l&+XHh?(T*O78V6O>$b6Jo9NMp90If38z5)hhbWH6JE`wcg1SdFzfLuA(rE zr%JxNvyS6F^xqhstN-+l_f7aZ=%L}Nu@(L2D%nbvt4Fw-dTsp|9xLiDHHft$4u9iI zu0%(T3_TONC%)5`6^AuCYHsKcpUXR+S=&MjMBeJK(CDGTaw)7Pqi~o$>TX5<$suLa zcjjgcr7HjW2H(xmFNAtWDR#`pHio@m>$^6J&^LbDxce0 zJ=Kqiyixz@1#c}2{pU;zedS{v7&U_XhUgdX%o?o+x&BkK9Qn}mXDD$-BB9o=m=)rF z#qQxDjLNGyNNraZABjY|Lx=E60Ym(z%kqzN4wM|d^7U?s_MbJhKBZL;IDVw|b0)=P zeslddk&*)QuyJeOmwRH-QU5varL@H=7PM966aQEd2lC<38b}LM1LqlZ9EY6~~08 zCW&x8{b`B6=H3&0YBN{yvAr~lGOg{SiEpUrzoqG3%ZtJJ1yadfF+%_8hwgaXGR`H& z7iRD~fPB@9QecjciCwM#rs5Zs>%ZCQeRn^@=m*=zTZ}~_*MAF>N7Y>Lbm#9z-r(<1 zYQZKl0PBVRI`;k7@FdrNGl^v`>OZ*<`fo0|&H}n=;5-K@nMn#)fpOjIh1@lemk_gh zVUP54j-wK;%vu-Yo9Mi_SWi6Hf9@=09n?QR^q(yYcjqyl`a1NVqeG4`SzB#4SyM7# z@R{>6-SNUXeCDsd(G$++#>u5HU6y~GQKhxivlcnO3F-jlb`&|-0&(3bRxkxu@yM-; z&L(iwQ?29LH%hVfIP{I(20>5YFeRdvh;D;?#fo(G4VrT>s6XlnJCZ2X|$0N12gGp{oa#$i?{?hOY2! zA+LGFUqxE=-vVf_rkjUEZveAu{kM*B+sRn%>VRJ#!i_+qB4Bf6Ixb{yP+WP?v@&DC{hHN(E6G9qcLvX9F~T?pNYsC)@$6(M=YBoEtNuHMyrLaYOaGlg zJjbJR{dW%c75#S>)>4Bj?UzcMfX^CO(SMtPwWr{!CEK9c%Nec9_1}S{|MroC`%X0S zWFPgyFwY@Y3-&`GSqWvHRyVj49#8W4D9)x_@qVQ`p zjl)&H)G+El=gX=8+|5ZCt#!_8tJZ&hfyGV?)PL@qRIUHC*3Tq;@K*iT%KP5+--*;h zcTaI0ss?I(uK$)&(wqdH`fmd{t%M(;|K=g(>OcKiR#TTwAdhc?ZOa8%B*DfXRdY-Oh+*{+cd$qLy#nl(QOjPD^xs9y zthhMozk3;1zX57YrIucW=kO!IdmbLHTX@_s!Jo8=(GmK1|6I|k=;C=V{?+Kni#t6o%IOqD$)#mTyzWZ=1^!fzY z{V%+D)qgiIGV>y|djq~4_b|ikOy2zr{)hg14!S%}{udJ`^xs#L{(FH~pXi|fZcX~{ zQDz*y6KuakPPzVj7<&FA`tJpJ@i?%VDb{WlGY>+`b`Zq6WP6MEUbW{!dO z>OY@{=8NBIO1f)H6IAl7|Gj$*ssF533!vIrib7wp~txCZYe1%BQusUzDNFI<2m zp8<}x|MsF|)PHZHR=um#0({r>qW}JucwfWkNd5Pfr2p=L=8q)(_kpDUUP(Ps|J~2* zFXi}_r2oDOt>1|>yuduFrv0Bk?V15C-U%;QsnOW+;FG1D*T>rEe{Wm+?!L9)6 zzZa2@(0|{8yC*RRU{N-fxoktST>lMZZon_`u2KK}28sG7c&PrHo&B1*W4}fJoriz_ zscB?$B`{6No@K^Zmc5photA*@%}}?Z{}!hBfA+lCgt3JrV-bXkiO zPh}2*^>;7Qb#1D@7a?7)19~}z=FLKa_xR9Szo?WO)6?WX?TMw+LQnLEh;88{U6_jbJL-ihwIJ=Ncf znYZ~M{JxSJwGloI$LsD!Abcd%-?stRrFc(`0{4fgCGI_T1o|CBmTyn>_l-QW{o?p{ z6RCQxzl*c2NZc^E)W9nImHOMC85o~0{T!&G{c;OB{3+tqm!78%JVed@QfYkl?Nomk zXYXMhuPc}VYW;2HZXWB(Pt2nJF3h6-el*qJdZb|o+I(U5qteE#1^7k*K~M1grk%h4 zlKA`gQ2SZ<`>qcBeLMB{`|$VX#NQtxg+Ii%@ag0Q@V&&}PbL2TI`Q{TYSrhU?TdJD zjit`N2$r9uj{jTY?|(7pqcZjLZ_4_4JIGv}wXibWNM_XB zMNM`cx|1{cyCFLn?=x&0S|Yaq z7i1qMpP!e8WhZ5aDYun1=j89ctS9ciKf>O0bm^wtlaQ1?`bBBBvEq`>|s|L9JprIF>EE+PnL4-9KFyOKU4Cpw7pi z!k(?Yrf3l37}M2i7c+2zszr0iU0hCxiQ|edCCEKTp8CRn$00^hrlrb%``YdzS~SFHoNM!F^>kHT zSD`PCzm@`L7Z2vUrysZ@K7HZ8D*(A`V>SPK8?Wn(mv&u8BD6sU|Fv3l_Im7`s&YSt zbk4zWd`_E+*3y`7T#3`$m2+*J=i>UwuC%VLM!U>Q3F6_(Q?B-1G&omy9@Lvm%g3>f zX0F_4xM&zfJ4+jQKl%bW{~Zk}8Wz#VA42OU_&=LmCen|YRWvy*Rqa8p_&x`^&xV`& z#1^mr75-08_NI*1?_5XZY_!H^# zcJ^BB8JnfFqbAZW4*p*R|FxSH=l{uAH#R}@oz$BJv?SfNa1m{>qTwQXAoBkT`V=pX z|84O97FyeTXt4(WZ~vY6e=q!}O zp1$s5@c$@1r5osDe+F)Tg5RQHDQ$fDe|M_?7tzDpz%26O{Qq2;|6isjCI6r4Bmci& z`azlh--UbkVe?Y|Yj-OaR+avH^WT?u`B%dgEiVtJMOA^XHTQ|HfopXZjRj&tPd``W=CPu}wqO7Eit zTjb#r80AE~z$C7#p^voofJ_~51+qmEG$APmxIRM>wD;*<@vm5u*a+i zmVMah$?Bz+6X5C4>*0Pm2Xh6)XE!Vk~d$ z;Ra0NZy91?sm2z2<9M%^qv;||#5J`&9AiffxAzvg=&d9*`oiI&cnEpS3KJJSj4VI; z-@Xa&d1>r3aTX8b3Z+-lPA?l}plFEo4WxuPhnDz%*n1N=J*)EI`?)8RnaL!ROp=*o zChKIK?EAiukOT-j3HurX2@nh+5KvIW0Y#__Vo^~lxFCX-MO>=ju63`q#agjiTl>1z z+Qrtl{oXELzyJSS&pppG%QMe2)bIP=-|y|2xu1JG%e9^BKIb~uImg^BTW;C&^*Z{@ zS^z9b{IvxLr_clsLw2>01Wdvf{I=KYonHMxcaqc?^z1d2<6v3`xTkCFff<*6ip%XG|gAhcmwa*(~i(`l_ z6@)$498y&4h`0s)h0V269Qli1q4$|{F2%;{T7$SNDOxUK9W%XvU4P5+!sa^HLP zOJE|b^4E2CrJJ5T(s=|=ge3Hf-c-`iXU5P*U~aX;r(cy+QHu0-iaM&#fq3dU6|$`c z6CNSfq9RUuG{%=IEDCbhAg)?f^#~1IwK~LAcwW_BKU_`Uks0&Um(#v*uK$EskAToM z#?!w`xa3gyi>d#jW=f;bf7&6GPwhaiDko>8g5Fxnpz&)B;g75rdPtmo<5qGFDGcv< zS1r-QOqKJD4+>nc=srD&1=`?@oDY-tMTL@mYtLw zd*N9t)qn0O=b@jw(x~T-79=U|UWUU~_q}G`P zMPgNUJyJveO@j;W^rs)G@Jj!f@uBS28eFS?CS_^)bk%9cQ}q+K{7&xO2TuK`KXvFo z`CG34oU3llEZ2X|fbIm#pjNK`W>SJNJIJlp(12ZM7Epx#b04l5Jn4cH?rd4oe;vdc z%ahq)GP95V6OQ(jCf9#bdp4X<|F!Y95$lusuO0aG5qI^--*j;0O+5kiaGeG=b0}BK zy}Hiz9i7`U7bxZdP3XVbJefu8M&MEZ%}=yb=S)sKsSUzK;3%#O$w6;!_bhcsNcEqq z=DV+?J1IVAa!H{ij#HtEIayWeZTw2QT&C9B8zF7>&eK|G5vqXr3)Y z9@TWqsT0;HYnndG%hJ=@_1|JF)Vcm!0Ccu5LjNs9Ry;c4*&O82-Q4OauZ_FVe|qc5 z>5~4F3zNt(_O*1id3`6B0rzBbQUA>$#c=dr7b%ueuAWPB$h9h0V96T?CFTI#Jj!y_ zdH3;LNxcdEr$1j8an*mb@K12{uNLAjv*R>X|Dg)@vH@3psAF#2#ANH|D0E# zM08`BbN5R1-{u5!C-;k>*aUKK13IPObzGNI)@*o}>%XPoqbIcWRKMym#G3&})qktu zNh|i&W#qe_-=*-!83nb5)o^ngxs>$ZGRj^B%oBlE{kNQ~LjUQ3=DsxxfqF4zyNZUA zx&ZuKtHLLZT)PhMDpITe^kVnfVq$JX{`8vOFpTkuMOedUF`|&`zg=Li{&TIPEznFq z@dh~Ffrrg1eslfjKD{GJ)c~*bJ9AxC(J49BDg)C+feGNx6{tJAk5r)D3t9os4X# z|2C560{o7)^0y8uo`Tm)=)b*SRcqKyPTk~u5q04-a%u+R6UpfWsB${6p2PS`BV0R$ zr6x^sTDkA;~+dc z5l9;F#A=2%q5n1m&DwOF&S=m1Xoi!4vYyeL(0@B9XD_9kz&rO3IDy!v3H|5l8*9i- z{dWPdZblw11m9DMeFDGRYKHFubb|VC7v}~>Vbp)uFrIJ{9Jx5@KRk4xllt!vWtH^b z1&sWt|1JcwZH(TWKn@4_TYyj35%M{Y9QMGSZTz}c$qCT-Y|2vq>D^gdm`)AL_212m zZj2;t=)djAPw2lhfFShWeqcU_xd<)rsigl7;VY*8lbc(>VmEdFB5+avU7z&dO^jcu z|E}fj3B);48*s$R_1`5>ehLye84Ryr{H&z^t|wLoH7=v9<_fC$p@iz?p_h#~3fY;+z_BFVdy7FGUx$gkJL)81>=)adH{r6nbe-FXG-%I-M zQF71q-_?u`_SJt+L!Wmbk4<>zKEn#%5AgRIWYYHE+l%_|ox}+J_c-*vjha4z)qFmK zUV3EM`tK<)JHj5r>c1P1?<3^#C3xlWF-AK-i~iFK`7l1rx1mQ~PD$@cdwD#`yT|x@ zl9;B^*L5Wl_6Bmgu~+{+0v?|yr;iZ(Nq!%zwR+%-ct15(59`o>V*SDZ{dY^!e|j#q zB0p_N{5mA>Pm=!o8s4W*qyIiu)PHYJ`tO}k_>I($*CLyr2j7zZdvKWg??X^zKC;&h z?tfR*e;)znPoO0}Of7wkdbk#Pd;qF_kI~?B@M8`AcOR6lLmq$BtN*@>|Ll*@e-E)v zd#?ZP1Sj?18^J>T_i5t%v}XE!1lhIy=lq0{{`*Iy>3$^T4b+FfC$Bs3C0GAF%?Nks zzrVqcSN-?CUj66FTR%bn{S>IbgZ_IKS$rOho50}x%y>}$J(${m|E>R`{rBJcuYfH7 z@2&qFN67zd2gIM%D@%3E-?%D28>_b97>brQ<9jyvB(CF}U#FKTZVpGJGmlEa5sm!M zeDaZ3uTAB+c$Dopgk^glBYgvowcF zA*a1(M+UX1o3|x8#_33oqct)9kkda#dMqXAUzt9R7@41=qA}_rJ>;LMeQVB+xwy(r zj;U~at*uR4_Haf7jqSLBBU-{GK4KEqTgMNiWniS`%Jy$%_=BdFFFaxpdq#&;n3HX( z@XHQZ9bMGk?)Zsxk8xTq1`YMJhVoHuAv8z}SLD(%@7cq?gs?k0>d2gjqZ&b}%I!HR zuXlpE3aj|Y3$5=;l=9-v)Ilq)#M+J>Z<8O&gZP+!@DTFpC}zlK_-Z>s<%n7?pYGlm zc}DK8x*%;FQ89s2_G6=P@eHsoLG z#7Y^CmWpl2RPFxaS~Rsq*_w9E3&$fINmKr{sW|GXRF&l45j=g`2M?~?uhhqwv+LO^ z|L$t#7>J{ht|;qRoD^}aM0s&{3rC6^bFjq9^*5LQiNHCQyc|7t2V+-=8Aba$R@QMn z8^=D{>y(4y&LMQOJzRn!-9D}7Vp z;@U&Ve;1H-lZ)1_(X{Pd6J$KSh3Vw2{423jprWIvL(9J_9k_SLY*NgnM=b{zC;4|( zkook#N7GAkZb7;HJ5t(B8pp<3NM9+4Wf#LO(>|H3()5?!NWDcl`Tf7caR7L$c*8aetgogP;cWlE!kmpHC()<$nb^t-yBFf!#&C#y+fefF4EK8aovwL(BKgIB!tT%Nx;WFwNBLhu z>6^Gao}&vMbQHFOk@BxS`NT@#5Ar;h|4mrrLjG4{H&p&N7Uh3+nfz}{@?UvAMk`bf z`9A}G&ZYOi4yexOnPV2pzbmYqM@b?7$3dBqz%FmPu^ebKcBG|Ja2CJ#P9)Fcum^?w zUqXsWST~gaO;`yhky9@J>*4KQj!l%mlad;M!1?-vhrLDlznJqz>`EsBr>g*I(VdA^ z#j%cq*xBY_yIlirA^&@l{O<*m-Mn#KtxBN|sIN@&@9d6?uyEw^zpq#Rcf-XaMftxB zOU=nx={Ar`x!9lNe|x3uk%5r^y-3<=N&a6-8b=9^CK~TZ@_zwkFNZhoiQ+0FyLh{r z5*9(JE8tFL`9BrzjRu}$q`V!voCL=WFc<(xmL{2##^x=#6ol(^?NlElk5LCCHa4C#q6&k&Bf4VG!ppQB>(p!|4;Mm&DegG z|0kjIQ+?#$88?%$cfAU`(xX@v-%R>Sp>97B;D8k^iTX z{NJ5)&l>Dq9TtOoJt;1lxy2Dl#b|Dj6c!TLBKY*!%1 zAH=@<+tjqb!wUJQ;PP{*^CaUM&e#7V=D0k@n)FXIFa0x=u#2~=nWg?-=Gy<+kn;bH zUitq9dp9co-vqv2BL8njT5m&c{~^i$^S$!_Zg}u7N&bIGDgXH2^8dfJ{A+#iFZ!FM zvsbkQOsqawt(Qj{^a^c%76WbtB2sf zzTLuY+g7WHRu21dwFY68|Ly`U|Fwri-?dr}T9(3}ICcio-&6kU(_2gV!GHJr)bgND zYtDaL*40Dse{zxkde3U3a9!ov_%FTOxiFEN#; zweYWzn8APjXXU@M_~rkMA$mfPpS`pT`UQu??G{@Y)k1_k85 z_J#TVqYZLDC-L8&t6qf7q#FkX<-cvh>YdX7?fS(3ndG!O^>RAtS=G+}g-P00(&`NUd)@#{)kAmU|H5P+a4+wi z|K0F^P4(oo8TGr|1=Y6|`F}j^vAMLam@xGipeFCR|!U z|7J%S|9A4tK4dLk9`awWr%UJ?2LI232YSR@P&5BGC;p!S)~-G|t*{;WI}U2Nwp_Jv zGE#bVk^h^hGl%fPID+Kwq2+x-wZy#7(6r|vE4!h9{68PK>(jY5{<|KQez*sq{f;vJ zUk(3ns-b+nz4kNCe?Fu1dS1<;N94M0C(-V&o&T?Hzg${$B%ihhV!(C68^@nhAC2j<@@^8YzJK%Pkazm4;^sQ<2wRxSJtYTW_J_s|K@)+>g9coQoM}I=uhO&;?C#MQ|bHOw|P&+_VU2=rt?dlAGR?g zH{ayB*?u#B`wV`Q^WYQzY!^F@Yc5en#IW>uYx_C+9FFAW!Ircmu(s=?ZJ+m-@)(}Y zRlji$Tf(LEw#lPE74vRmM6LARR=3|<+hM}zjKp&I%`@6qj)CU1Dy6rzlmVTY{x-upXNE3r}&#o%ph|-F@G!M;;$86i<^C$!SHu{&att<@pt6X zu>)Hrj?b0nANV_d4E$rq ziFT~Y&JeL(ljk7*Yq6+}p$#yFH(SyC<@x9MYmc78ciA=E*Y~Ct!Zwb|`0oPW^?Xx; z|9ca(<@ldb#Q#LNu!C49L5tJM@(=ts^L<|qY-iF=>5Knvay(MR{{-Ie!;)BD13U5j z9L;y-B&09L|7ail_h2i#kur1qk78lYsiXYwgD%%Xqf5a52zKb}v746O2mY6lMINC=Ys)9TD%zyNE|vfKt*Ir1ea4tkdf3&x?*APdJU4sy0kvA% zEA_A6srcdzo~raT>>7@Zi$Qo{nc6!c$f;UN(f7)4h2JG@QsI?h=~{N;TiQ4Fz&qj9 zsub`Fjs6YsEw05z<(D_U%3|*q%(GDWWvXsr(#s}n9DY5FAK%yTRjZyp=x=#`2Q69K zfId&+Qa!!CQQ8-T)^C$G!k~iRYI!?!@Vi~|?XhR=$_x50g|)0Y|D5YD|FyD7G3|Y> zL7=6^Fmyc#4in%1Y_r6CX=^&44L2n#=h?E;43I6N9(3z)p9%)@e=^jN|5Bn_`r!W*a?$%n z{yP`U7L;B+)q`sVIM=s}U)Rc1a@_~RJ)LUf|NJ8VEpy6?`jP~v{NGXJ|311ujh&U zKb!MXj%p$Je@&96QxiInnqH4*ZQi=ap!T&w96NCTf)8?$~7m{bZ7H^FH z{J($}U+w&VS>pdTT82|ecX{Ifnbd#ze=5Zct^afWzY_kxl9B%_z(D?A4raIIKn`)9 zh{wQXSZS^)^8Xz0xdM4Oq0j^W&m1CUy!tKpua`#wn^b}E^$Vy21xDA0$N#6`|5IT4 zDr83fU&y{Jyyeu+(qm+L>~cpul#bN&;K$GCo+^9MPKjc}loSt*J_P8L9R4)0Yw6~Lv^3AW%!?`MriTD3XNUd@h=vh9} z;^vor(+Hl`)!BK?xQna05p)lHH(_G?q>j!hQ>RUzF|%v-oO#^~iokuA#BT+kFLJz% z>o0NsGRHeOzQ!?zXX80u0BvYqcstM9Id+m>UYx))Xqf2f^HVuAAjpT0av-ZoHjVRg z;wroFU70mb&&eF7F|B-%ua;BfGqGw6St1Pd0Dt=OVl9nE)Q!kEMvZA1JFa!SP4qsY z=i`+1Cd&LY$LF~I0_WFph{JDl7Pk9&{tU2vm;-!$m!5CrdK>ScO`?HxdK>SQap@+_ zZsBZwf1cxITob2fFW18iiQAwiegu#MyKF>5Q}fWHxIKRa44>!tQ<8p~^BRud=Rn3a zN%ef7w(Ft66&RoyF`~YHBrugl?)fM%e~RO`!23Q9q%_eG+9kR{8)?<&`R=j|yhN-C zh;lZdL)i08-hYQYKFRruflI>a&0LGyU}u}_<)N;wzP_QMv2nz}{0qMaY|jC!e0?L= zInRqc74AY4N6zD$h;wr>K5{Tvu)e~=5eYGkCPRg9QSP@n;9KEyMSLC_VWla%`u<$s9tGn`+|`2gu(!}V*qzKrXC<+zqI{*&XMxqgE4Q=FgXyp8jA z&O10un|nCAN&805tBdJ>p^hSJGNzP>$q{_#*c4poiK6ygo$nZ7c&0g;$UGq^;zBV@4)dN z9J9E$ovQ47p63^FoWQmE^4(n58o+5n`{d54vxZL4^K;(+EqPBM!9Q{SHTUY!slf3s zT>mewZG(4lpx=^SL}#S7G3}9_xg352@8jKku19e_mP37uyru6DZMk%>egYRT?s^ZKUIHcBV9brhTBbLXWr6`fpyz7NwTJrDur|KB zrU<)r$Zu@P*q0;BGeXZeWa96*_y?|k#X&p2Fqvl^9DeIw&%yUAwTu03xA9*1uH-rG z2EXB{y^0P?eY5?%LvN?HMD-kR4Ah9S8-$m zI$%u8q$z{t{WuTr2ZpzBejA7K3r-2%-CTcwYjrcY=lo0f^A2-jeCOrs9UQOW{w~h9 za|W+OBV`}FdX{ls!SUik9m)9G)brUXWl+Sc^kA^7Ur_enaM<4&4Nq-{f12Yt4scIx zaOLxIuD{LkM_fP8S$b3t8DGI6L(&=d5#>?xe1vmOv+dlYHyDnOA$OmvXVed`;Jlyn zkRcUZwR~+ZNq%>5UP*@5wequdgLi#`UwDr6?8p56jAJCUYv8z(YtwAx*ut@g{QT}+ z%yBITbvAvw|A6zGc^?7d6XG|X6n}f`7~hZ7_nyjmF2@XxS>z$ClvRFC?YEnGb{X#? z04?9W{I2}0K8LoL{30JB^-SYv;l90ePG#ozqauD!DMPZSag)=8*Lmpq30L;7q{VAE zq>J?VIC+19V=vd|aF+MTK!OFHu;5v=#lOiJIY_#WdT8j|k{yI-5iNfCPW8N-OKAmO ziEeYbF48U0ZadEp@l5{kyvKWK$~oCIykEp|IS0Y=JyMspM1y$Q@7K0|!X4USludL^ za0tT!o=H>TD&9-?M1S8c_LQYf+tj^a+7EaGM6smRJu7>3$Ddjl*L$AV zlm5~(Hhklb7(Sx~JuXRBA29tc(F9RMZ5-F77I7YHt0q49zIJPH8wgs)tt=lPewsmLrYVAL(}B(9nC8@AGdv{ za8wK_K`Pdi+>NPgsH-2_+&HGLv0?0}5hGd~Tbdi|Cr)UYGMO&BwALg%C>zgUu^i54I05En! zd*}47*#nwP$n}^pt*!0tlO|2J_1lm&H`_KJKYqf5wzg?A`Ob}L)f%b>OhIj|?E(#F z-^xB!qn0oJ!TAF_pvQ4CVl_u--IuH)g2hmNG@Lh#b-4;|>L zR?-3zZP<6yqOO2t$IVwQ=^F58@4;hBx_TcUK71n&y81p5F%owz?0Q9WVgD7^-+0rZ zBUh8vK(Z9Ny1Mr5yKdFmb%(lcz3#ddOZ;7#e#tg&xmdZmt1Ade{1iyEa@B@Ii@J^$ z2}gOGiBo)?XWHjI85t#ovUqtupi%^U^Pu^Z-UDuhvVt7GT)w=^+zuW))^+ub*WY}! z>t%;-x~6Mo*UmGJ34`UAfu6wG+O;4@Yhl;?ULN@F;&}%y1*!q*qu$d3;F??3t&wo+)+`9Zt+-{^1~VxKJ4Axyix>0em6fXMs=TW9(HCY^Bi*S(U5mSl zGE)vf(5)iBdnvG@gnpr4`ZA(dl-FYUU1i)0{ZY)T3i|*f6fs=LwPv66K?gFcSak*w z{Q-E?njSQ|av>gA{{*%KM_)NCN2C(7SLe*m;j2aWC>VMC0X(h9mOg5vU-~i}hDu+? z(z5c)1gc`(%9S)CjLkKT_;1w4B7P=)ustgrAs=V2u} z=3K1wKIdbl_c3jJ19 zq2H=1^jqCaKV?iyNY8AJ4{-d72aH1%j^ntH;~IOw{em`7ZSsE_@g1|uO*|8`krSF2 zUBxa&q%e>bQ)@vh%$U|VdQ^SWn5IUI0;8K7o10r2n?{epXb`c+jHWY8X1Ku+_{9>y zOH6I?ek9|#g9JwwiPzNJ&^C%f3r&swVhpIOn>4w3)@38(LGSxwT2CXe0VOx4vS(EdDaRw7!wb?zEoHEX=}Qx`>eq?Wt-2ZKE#g+AkoaLxz6Q2i(4@N*FTp8eR@4aF`FO zfLHZ(NQ0^-Ir;D#^ZxXnbie>hJ#%6lIEY!-S}Bba@kgd>Mc;Wl&UGEjZ|uJq@na62 zYX&(Zs}w)>0CTS+<2!I!UznNVs7Tw0TPVyLB>q`E?ku?od0L}RJs(x1uvde&%t?$u54g@XOUU1 zGdV}5JgcYAW5|W_;A#l91WRv zoQ3LqSoc%v&y&IOa)oo(mlxt#r{3A1u67W0cCa+%&(sX+iT-6d53rWt`flzU?8*a*650C#*Tco}Glk!qi z9yZocelGd)-Kj! z;Qv&p);H7@=Jb6~;ZFX$Z|wXc|DAnU&+N%s`M->YiS^%|TuK1y9(PA!F>}t=L4k$j>MpO2RW6-;L`URv2{!fShOGz30cg48r)sv?$Zh@4pdtDxC=l}Y| z|GlgTwS^g^XBT$Dk8{&3*v;h`R=B=`H8Yyw;pvJ0=alh(Q=xYLySDOC+(@p5|2G!- zf08aFRfGFhy8pAgR8J%2bmZ5S`CW~sHvUgXTF29zuPe-kYdQZr$fFkiuVU_97u}1T z|Hrc~-1fx(Wrcx*=>yTZoG!^u%H9p+XT!~lf%`bhz8ojJ+W5blw0-%%n__C^|HZ6+ z(gW@H;vARr{}T9rH#Di8|BujCdjnGZ;xMgH$i{CE9%_fe>o|F28@KM1$R(b|>&_Z5zj)9tzm zRt|BqAu?n_R<(G`{d_f;*uKzZA;6y7az(`cj^iAjp=@5D6>2tXAv(IY_w)%5OqrAW%`U0*YQtAb{ zVzz$~-#5{7iyZ8++vCV#j`EEaJ&Wj%TZZYPlstD+290Wix)jU2%+tQ3eE{<*ts+!v z!`dFUM`y{#vyT!fd?TI#k#F)VTS8%#h%$sSuI#l6uj%YHTB^AkfB3=gba~3?`2;V0 z*FOYDT=j2Ykoti`#PUwu3}Wo+K(3{&tVPIkF;*V4_^O7J{S8-3a%VMjwGSahU18Z3 zq2!Hpj@{#eqV`ObX59)6!L#6yZ_Lrv1Y<=*v59@#Vr3(_WB*)=Tb>+=)yQk@^OvI~ z_e>pp6%%vxY`MbkwXJC_OulusCj0z89g`riuPapIEWWN{=sJn6KoqMgdN#c{`R9s> z_V`_WNSTs$vHDUuY_(iVW!Ds!z9Tuiy0~S#rl6~yyUMojd}6Hn)WWlWEk^dw=4i>n6KOwsr{R-JN};QWHIzj?gSFvf~2Q+wr~@$$G_yoeCBH?)~jFDyQjp3$SW?nTY; zNb%eA?M9ZiU%R~q_XtC%%L$yeT`i>pmZ2TNB{qjYYE5tLc$Rao9) z^-^td%B?aUHaKgWt9lt*ITnV1SZKvj`bmjcl|HVlC1RcHBPHK@WxWoYl{H12wEdW? z@rNJ!>wj%f)+@DRD@SO_Qod2kTyHBv`FkygAqOQ{2-%PyN_*&k@rV%mKP>He%;KvW zPTI}1_PAb{dkVBegIEWwnX~KFYt_?6;rjjVaJEqpE9Yds77Kh!>kl~9RY9^1*m9Lx2;+Ai1su78^A|H)j}r!}g? zqK>Ov|F;5-ximoqb+9`%v?t6wo8H|GnL@z3Htrp*=mfX%Ja3@K)yDO3Lnm~Ly$Rgm zQ2p;tgqH8R|HA5ua*gSU`hOz570b5A?66u%|4${RtI$oO=i!>KllXHd!zpmf9-%uY zy0UB&PhHziPFZ)=|82zW;LeF4!wuF*@%9^PZL|)Wv)5`DrN{U26;dxoom5_Yt5ipO z%$&SZ{>>wDRtrTeOHc>Nuh7NT2Ib%UBQGw770go^_N+GZJF5hQu2aj{77zw?r7%01 zrN)s%YS7T8@kZUQhE+@Y{dP}Q&qAzj6V7OR*lLM!vDmjYbUHVEwoLLyIzLH)*9P_q+377gQZkZ-zX(fKi%ilIxZgS3hj;7 z-~X!qcTa!}InVWf2l-A()(iFjWZ*G0@+|cK1Zsj>N}1M1-40yVXDK@h2-}fv;j80H z*>_z%wS&8~H1vNfXRZDdQ`vRYCR4na;KYscv4ZjBS;G;jyBHdT{_o;E2bm#O-H7A1EOcVyz?0)CaI89>wljB|MJ4i;KgI!UMgpTqOHP~Y-G z|I6Jbp4T?!SB|6mTDZq;J$d)l|J^(**Z=c@yNhyHA`3J4UCOBM7&Kn!|0!Ix^445( z{qL?H?b!B5GP>YCgs!tV4cq=g=+VY~8?je|*J7S`f$g#+h2_vyzYhJsnDlF~9ZUa- zVH?$-pDw^RPYG>KNE;H5_2UmZ9+cQBV%hw+X?hjfNlrpKdI|QkvZBeO}#_~SzN2w3hx9UD{&b)-a@A4g2{R!10XxFPhv`p2D_LjPNi z`w6T2+<(|FuzGePkhlhV=>N%J;@YojlLp@VCiK619re}!)>ZYCaN5df;NJa@)C_7W zwUgn+>VHR@{QkSYax+)z|C!v)MqX#bUG@JAAXM62UDdsm=M!flb<;INnLNo`pEal2 zI)&8k53T<1Kblwug57o*N))Tz*CtihE-3ups*x&}y>7Gvtrq{iNv?vI0}5&G-@xj;J?nCBMX z=UROs*mhIeabQ@||Ca7l-EL^4BiHak=>M(hn|U@ea6W5>Zh>;k3#V~b|DTEbRRh1r z!6)1Qq5s|eCiMU5NcAq_s{dD^OLoG=ajXiz7G9S0|5_kc|I61ilPoR6R^P(C?TZuP zZWGV{EBgNucwXNAznHtw|C^xtDR5f-e*s+1_5bCC?MTi+}8x|Bcl|3w^^Ah~R{bb>-X?NCnGMd_}j%8)+$Q78Y(Qr z2~hoiEb0G~`sn{Nq2m!Kb~BVa9~gGQokm7M8hE1qKdbQ4LG=GV-t0vGpNaHb!RXl4 zxZfQn)$#D{0Du1#{jW|DZ+j5#Nmj>iwExxr?wH};4DJuFrORGsD;S6V_pO@UUC-@> zxUae%6ea!d_s-ssv1ahbQDwh&(VkGtsWU7;@){oXbxZ8vZ!+gx|GNuC7ZS6OL;c@H z=?jyt6N7og4gK%#)U&8}?n^d<7%lM0z2QcH!35w6kCJHrFXoB*-(H(*9M7Nzw-Vnr zl4HH0|2udy+z{>mT>l@345|N@Q`$-7dJ6J!3h=B#Bh5gXb^-k^p0`oU&mhi3Mh}-G zK|51hqm^f?lK$TT{MP98z`Y#`xQF>fG(sm@Z6`Up_g5X-W)^SMZtb)t)Wfz1hZojT z=Q8%L2>rhe`E?xaEMz?N|79-DfTXSij$HrmN19JTl9wX?rz6Xu|2H7b2axNvNci!{ z`bscW|DVj&7UG2d-;=&vyU4v2im3ljMVjoXy*T~98}6%tUtNZ_`hRx?{eKbhcBZ(m z1%e1ya&pYuVEg|t(9VV0htrd^L_@l|0XlaV?iy78-^`oaUxfa@1`c1%XyH|b{VaWR zkd=tl{|6Y)d>`jmz?U-_Q&j)I4L)51%(t?-aSvm&q5m&{1G)ac9_dm4?<2?eG9G*s znaSJ#Ytc_PkZv8C^fCB77y6t{dF#-j>i^66dyHeaq167brvL8+{(F-Cza7rM1L^rH zGNt~11pMw~agf%+=YaoO;C>~GRWvXL`#9tJUoKpic22t&9;^SqRMh`pK-w>1cduuY z{{IxXy*T~e$cm9Z>&&1@D2MAqTe>_5Ww7S+9bcuTEcyufVG#!1}k0vVRNt z{}hYmyb90M+mrtP063}tpJo*J37~#+YX3i8_%3zelk6k?75p5oz#}#E|F@|p9|fla z_&(VFe!JX=C7T#2sO%$t$aXW!~GG#y!61Pqg@z3QeV zXm$5Y9GCi6>VIRYtJhK6Hjl;b}Mp!8YxzzcXm);PEJ}y{l5v$O`u-n`hPEa z_9A3&U()}l^y>fJXujcw@xV4FY0If-$&&uR5(&7f@F1{+{=b_zcfsGu9O~(NSZ}+p z{=bXb_b@g1W_0KdS|D#I)Bm?oH?Cv}tV6x}Uw?FDvQ)UqYqli~9dR@vjN}zc3qx z$IbTad1~kHv$T@>|JUpo|1o6duh5_Wgj`R~_Gaq;FH$rAIJGF&7UpF);MtPv|387l zq5sEZpJEbDYu1`Q#&1G&7(Z(8$?1!F9=d%W^|1~P52k7Sx$zA@^bTd4UZ{d0)>&_9Q${g1y0{qqb9 zJU)TsX@9sFo<7f4?2~+%Mr5IXe#|1>wm-YGBS^rSY;s{urv6!wJzV$*f6@N@AGDa% zKgVUc{u!5r{`oL^@^gjTsQn|dEm`QFU+}%S8|nXEYJX18-i_@25oKP*`g6k&ofLID zT5U3N+Qa@GFCagEp5*5}$jW2XvB%J&uje~@KUDiCmIwPK^79OG{Yl<@3HkBulTh{{ zzQZ46KhN(1iSqLV8ekzUsBa-ZdS^wfhuKT*_sYIsx1tH&mE`9UV2Qkj3xEFo`XO2) zSVAM4}iOio3Xucctg0d!Oac zEiunwVClxv3XuPWpMmk~(&4Y^J?C-aZT=>IZ!QCa7C&P;ijiMyhlm_wWGZ|ZqQuB8 za?(@4v?DltV!ZyLK0Syx#xs_qQ4L%^C`Ivq9Bzak*aNA?_h6CX?S zjiY>8mmS#}7|cgM9Oo-&GY+b1&()?BTydP=aW=gF`{exq6{y8q} zUyN^>hyD(Ze}zR`n}F|P29OqMp-0Aqnet8YvH?0GInLkfc0{z`c{8$1ol1~=qq z?)T#Jk_6@X^erNC%K0DEi5!BymY{@qSBho6K_^p$mxsI>7{Z4n(&nR~`db8FLt5p6 zX)Pmo9y#Tsw^Gh0gUNr4hdF-W_^JHYH$-lmQ@Q->D`G7Fe6CNyXpWG7VQ^fbf6zx> zo0PK)l@ZU5PWV)r^=wee97zp$LJs9?DGbcpcS?@G?Wug0;3Mylf33RCnvv3ubZA|T zk!|JQ(Md;e9g}b$Gv(h=&w;^l-IDxkT{Bh4zojbI%D=XJM@T0Cjd7w3EjFF$jkd1A zI6{ zJ1~EDx>I_D%xj@>gj~KVTk0F-P&^&uauIj$9H$Wu(>iYElfmTQ(QI>(`|h*nY}6_I zHSpZg`&QD*Vax7FvD(R1`Pb*Alf#_^C!{j;f$1MYDnkCJ(JoW|r;|g-zvI|3I^jH_ zkbh+`A9D`*52+kOjDbPj;$=_YUaP zK|5>;IcOiAQ9=IQajqo)i|HFVMyvcgI;1pd9aa99&`!_g-!hE3jQm%pH#2~7Ab%Ht zmGZwCI%*3Z$+3ofRzRaVdYQ96nwAj7--Pun&x+7pILem;brM?;k?`)oIG4 zvLM9Dq>>l%uNHHh*HKcXQ6Ch&kd(`@#LMMhOMCy|tW3xMluk9A5;~6ScH$~SA^)x9 zuQt*mpy!Z&QQ>W13MI@jSpB~Ghi-V|&Xvk$H*sy-PbFW+MU{WGg7Po7$3P9o^1O4_ z-3VgNBmOjED*ukC_79F=>oL(ppTC2{9`!o@8hAbtt57Rk>*7ya`kE9=`JYMt%jk6| z|M~}n{5x*mKa3-+kr*-KfWmc%jlKl^1qBcR&lqS_$B#wzeCo^=McMr)G@yD zznq?BMo&v?^K{@;{*NckUY_ovuX!T!wUfJ(!D}b<7|Hc6O7Fm4q5PlBv%%$m4ZYrr z$t7?9EM~mwtfKs%2c0vlV>7U99S4ms2a1sYUBt=d|BNL6=M!rmrS}g9=o@U~&lz&3 zL+9f;juP`QaEAP!gT-_Uyg!?#J{gInNd3Q@xXS;z(0437(`L#aDF136zwGwnJAtkv z=_}=5FSbcM9gmbK|9Y*B;a3Tr3Wt^dHuBexMm^=XS^4T4Ow~p$&5#r2e^!#qlKfAh zq*+)knkabzaYFv*5-a3?Ht+Q$3HetR`-W~tPn7@d^q#268#VUjuer<$pK1T)^Me zzdSr1~#2~B(Di6yLJ%yKOf6+$p5XRzJwB6u!^bw_fUfz$G9@V z^iq0!FXt-ce}8&5iYF!cKW9++zZ>2kN%DUoJ$B{)<{}2i1N8^7UcNKQ|NU6fwSQm6 z`6j5X{J#lF+k@pIm;dVqDWSjo-;cfi6TR~PO8EY6X#E%#HRb=a$jZx+n_a}o<^T66 z@h!ZWL7#n~{Qm$7ew;ro6<qU+>8w0+6#Anu?GrofHTVf=aT%tkF?7F^W^$alK-zV>S5X+ z0LAyPwr-=;FJqHfRrq{S{+}cL$Klg$dA7ahpJBUt2bN#jJK1*ZJ0brMa8~}ci>}cf5Qs)z-Q?r|}BGqNT28*st`Tq>{;t$~Mb*#) zkv~KOKa7M}zdEuDvZicz_BTL3E4vDd+dmf0&AwAOJG+thFU#uDEt{d-FZ$))_g3WM zi2ii^hP9w{Z5r*-MoC`^LS^pc#;xS`N=If+7S%(9J$RZ zJ>Ypj>aRVSfF*w#aVr1XzY-d)KjtmGUYp)GVI%N9tXIbJ%2swQ!5*Q(_OTH9g$U|~ zWz814G0f8(EmKVGN7fSTVFu+*t+hhy$;k9Hhfo@76Nn%#w&#PM)ylAaueZEj=k_te zk`Vn2^YJja?|WdTx4Z5Cz&pJh;zuimGB zhR8g!?|HI(GP0|+`P)4pK!FrM~T$p4f? zaZ^vHtX%%hMbF4q@>KpO@!pw2d7q_P31OL)>QW_YrCipwtWC?{y)va7NEKtL_i72& zMX4QiOWG*0F*{a!ddR<)GOdwHn9^0d{Evaoqrf@jU(175TxY&$tI#SFx*_C$B4s+pu9(qfsYqXXW31qV|uF z|7rABL;vUUug9RXHo7Riop!CWt!fEc#^$7y!Soh#UJJ0H3PMJN{Mp$*DmLrmv+w1*weP*I!LZQ zH5~b$K^c1auLU~ge+BTm7S%-hiy{9Dfj|%E)kxSfTDD_(TbulpKFD7VwA& z`9F<*U2X8^@_zz-+|z;WiX{JQ=+%uS*IfS3KsuxSvldI$iS#CGmH*S}Bkbsv|9wgR zFC>S0dJYGm$`N|@`;z=0qwL*aGXV_GqLkX?e;SbZRaO3#6TepaJp291xH8O4PyE8E zJDcFN@*g&_6k&)T_5XBaBIJJ&sU5@7Ls|dlrO5vRu4eFbIY%!4uJ1N|h+Iprl>Zap z)(PZX!1}Wpjj$Z483l*8aD6J=-paWo|EFOO(rapUDU%_t#$%yS{x5=}Yw7uKqnvA? zeFq$#2nUq^GwE5)C!X@ZA6&17Ka1ghEkXG=<`igAF8>GUEp|hjS0wpAOqmzacP}8T z%Kw#=xxJR`f$nMYP_JK&d@iJS{X~-gd$E{|qlda433_Kg`M(%k&%iUNmhfimd+Pru zi}L?O{uuh+ zMxH-F{(p*XY#*h+pPsMsfA6s6e>S=JRa}D1FM=LjNPBm${C9CL*VPaD)VmtsCU`Qh zM)^_xPX|{mx2xgdh9v)bNR{OO!X*FukkZYRKY{vw3e-Bi7V;A>m;Vc>^{3(qbmt)Q ze`k{aLr7}}ynO)qzoJI?mH&H-^8YBZ^fVTrYw!)e2j3$7m6iX`!jZROJ5v7t7@Ne^ z@TOMz{{R-8AA#uyv8!d+WS-;tL2~+a;XknJe1a`IAAsu0|1S!E$GcrvSH6a?)Ntkh zLqPQ(SnqaZmt=p5{=XML$8mTS{j4bedN6+o%6|w>kIrhB|4X1`7u+n#&*eq=IRgva zOx|^2>k0X}7EDeB6XoY%jr1Qy%+rBZ`MDqJC_lHslc%tvPr%N3JtbdA9lQcAtirCe z9(&$|5~m1AX+T^79@nq#uDJr(ttkgZ;2J{rLkRdpEW! z>GRf9zb;1?JVyQc!$hBV7wPjD82+M+K0l$XT0%~rUqPRrm#P4r*_Nr`E;o?mCT#;G7TC!U54?CAp}?V zqy@mM2w_{W7Z&z`uu;W21QElWYzv0%%2?Vs!eV3($KJ4qZyZfEw)XsJKRQzH4E}rt z0$U;W$ZW|Oge>N#*ai@@fHgno_?x?V`P|auI`0n#{`MfFpBGj(q7l!wZIq>z!ail# zXnY%eeb-nO|7d-ObwocWgDGtQh~#aIe#&WS6aHFt6~ zpVm)fN?nfsCiH3tG0q47GtiEw^y0q0>re3tdWe+`hY;_nP}+(P*8d`#PR2Jznv z{^x=JS>S(S!v7rNU6|hAT*QAj-}Tpn{}IN(&g_T(owSX_|F`)%zl@g9UcLY?Da!w| zXzT-gn>%O)ivPFx{=A2_byj0a`t%(v5`dX%Gt{}P~aWf*4wi~nY* zv$_}m6+8+4p9mFKra7z2Xmbbu&!)`R@a0+s{0{@W_`d}FUq(B^@V>`Tsuhek0Y-7^g?zXD(BJpV6J`^xkGRm%U2EYCmxPQ>>mWeFF`?-Cdl ze?lYYxu_pZn}^a>{-pmozAEZ7?M{vB%KcvC5@&n-*Kj^0*kZ$~p+1x)YW+VHnL zW9tJJ-?13o&{wy*jXJ)n!8Pe0-&g5b+X#axbHBylUvN^*RBB}qsX_=!#rG_})$-r3 znO_MllS2nbAEdX?`eoNLV0%PbgxBNH>4X2;*P=~hYQ0N?|J7}@<@^s1GQXdG-StQt z4*$oYBlS(Qj}-iGDYgNI!a$EU+ZU73N5OyfyKN5nU)_cz#gswYPL35t`yxElYq7Aq zR%GyBsw?xs3tK7p4-5r*dYALxwowat#maSBA+>r|=f7>5;J@o2**0-BVmvf-<)zTE zLjlp0T02_H^*)|LTK%PL30eQE+kl*(Vl3zFk0!O&?co1pv~uK??R-5O;oj=R|Fz_*b$;m3m;cAn zwpdCITN3~0(qgF=W?&IGnMgZ|{6B|Mk1ObDDgS*lbjbO?Iq`oj{NG>X{}w!&P8d2d zZ}rIw{+~xX>maS4@w7rOf&Z64&vUD$cXcSeHK!5Vu}b?g@_#yiYNBevw*GjeK7(rG z;Da-ubNuFQ2td^XXZqEOMg*lyLb@4zbmnZJOSO`MjQ4p{J$gl zT@4LF&i_a7u+b-N1?|qL|L=qUPY#`!w_m|h68!%|`2XjL|KDPsaPa?|RnxCW%S=k` z(xr+2YkK)_3%WZ0&!fG0e3Ad#;QuA`ZnmcS?=1PfRm;C4@&6oVM_T`HhyM@I`h5vj z*1K!s|HJVAWt4jZ9!VwsKZ||vIxM$;R<-=I=&Rg^Md$-%{C|cX!vl%`e_S>F{4Dr? zN;WSm=l`?}&$Mh$RxN||^a_Ih*CnsTo66{aHgZ)hoQEYY=zj-T+*PFi^+5>u_tYN`AqC&YyRcfAlpSFgxSyjx zj;Hq&@c&0)c_#cnsvtk5-o`-kMi0bN?M0OCN^sb!i5&dG=XS9CyAzzRVFk+H z=I8KgDfukr&-GRCn`IthtFe7t9<&EJzrh@|mT3zr6@Go#~2@{L{`D?4n z?PG)CA8%u(k7EM^@sBl#?N1DizrGFnIP?v+#{z%%>! zUjRpo2gBd~jy;9k+E<>t^w;;o)~7Z|dsTgdZ4}$d&eszE{ut;7?|O@YzpFm>4Sp@` z@z~lH|F|#3S&-T<@;~tJuR+CMuiz!AuRmuH{B6f9MvIF7EZTwnLkWNFk^NiPvAV9U zFY%vP0soocKLgD>a=;gQ7T<$mItvn_2>UqzTxfY6!FJjb^!jZKAxFU}&`R+m& ze-j71cg@LFv@x7DBL1h8lBTO!jONt?!zJXf3H-wfR*EFP+H(FuwVIs|M&364*b8?@4fi{doTV!9f1EOnf%|t7?=FtgqL^U za5TYxHWshBlz#(luD;b?>$9*jnX@o@AEP3^723!@@`)07kNJI|2I&x-&Mkj_$;C@6mESt?(_$2q z4qp4s&pA5~K1c9^%KF;M3vG+0(3j4f^kt2&Xm}2q!g%_?iCuV5$9QMh1D&NRw9z^g zx+qsXVivTrBt@mPSoiyivKKICf(`E5T$&dHSN#rIMghT%LE{`Ecd}1u08ZR)@)*NLA zHr^|VAvtORQ$%gZp)uEx*1(qtsWi`}AU;Zwc_?{N17ln{mt4oawVrCbjIxwjgRS|n zr-q&|x3ITbe}dZO`p>7q+2Cm8qjXfFpKVBcBl1MeqSQDZ>a}%Rs2y!}oIj{w3)@=g z%GK8481s*QkMz|Zqa0fETZ+)Qw}hh-<`6s(3)j-NMh&I^Y~u~B|McIt4*M5lC$YD# zdZJwaIiI$q|6KRl^;^TUzg+)~p+qS!mbo6vIU7{ub#JhC=K4>1SX0N5PJQ9p1-br< z+A1AlhO(T}1K0WMq5oWkJLbGAE!JRZ=rczrjM>hetAaZhCC0TK36DNcCH`ue?yLXw z-wyrfPQIc4Vvc~bh7EdDhyL?kcmto7qCLnN|9$me^rD1M-Q{cmaj>r=<;Er`xf~?K zTIWrqoC5z`r(CL)^q*@!OaW`Xlc)059Yb72VH{7De0OK<;6C) zhO5Sw^q;F_D^;!@;cn{H^-v4%0{7E$Kfwq-^@m+>D`AzA>%Xa#6qtvNTl>D;6N|q3&v7rM zEmpC}^`9%`D@UfT1m6t$=t|BE;tJ^;N}R{FYmm0Zl=!TAMJ$z3r*|LKSBc-$(^1;!WV@Y_JX>P0EAz{kWc*MBqdi^}!i z{PcdXpK6KTMDp}&rO{|!9J_1|1#nTz^Q zE`Y^t6S6^ z?kr^;)IUG;pDhb_=P{o8I&`3;Lyj<6TWvR4Q!-%ine#H;@xnQL=C8id6VB(x$)zw| z7Jr;krM1+v7CFBO>Hy`ojT~%&xb74yn1ZW# z#h1((E3V9?Uy=3E@oIM+vPEqwL;R-8;?FEN=ek3={+kRRlo@x{D8L=l%;(y@V%()7 z^q;mjgEN4XcX!@sqh_f8=B7A~RjdE>mvj7V7Iz(#B+Lz|#<&KJRxs^#&gL=N%;Q=g`jY-zO)T}_8CbMJ|D8grt>m1MVg_D!rxK%^84K>$to~a|4(h+N zc{Yy`#sxs4{yURrr$RaR>-n$hzthMo+5y${-`T`-JUZ8Z=W}1uf9GN?HMr7#p|BnJ ztbrx{w*y!!1y?OO0h+yp(Yjp!9ZLG|AUU}2L=$foLx)QkVck*Gf0tt=-N2I!3#RSA z%ZYUYw$@3M?J7U&zjLuKFK0Ae{ihG+`NZnN9;p61M*7R)Md-gH*rF@RpI>cfuZ8|| z-mKobZNN5-qYapytK_~k+LK-J$yyUT=_q4kQ#^fVqrDmWPY+b}pREP;pVs);pKAm$ z^`aO@x~V+(%Mc7*$b1OCJOgOIo+f|Xj z*AsIeR(|#0#ni{kfJFUwF*<2GbT|d5ckxdBcM7G+jeW$v6nRqrT|J@2;bp~^m{4Tt)iB_H0i&~m|1ao(ti&!u6{ezm`N?Y9?#)Nf%if@ zTzB%c2kM6YyOw+(BkhT-xN>S?x z68?w&dk(rhLH?H$C-mPplm2^wSfB2r|L#uu?=fZ^y#s8&N=~`{djxv^4f^i|c<}_Y zR0_;t`+i0G`88dH+>C_c%i+#!AlR7npZf{4AxVuqDe1q>saCref}>MSNVa-%5^-%= zxE9?~G+yYxSw;Of3ySOWvled7A!ZAD*}Y~qLwog~&qMRYZ#gC1wWS3rdDj2lJ%-eO z)~h8@?OgKS4vgx*vA#mzPt<=8G5bq7zANd!Z$j&LAPp}tkLnrbeTDw} z4l^XxfA_=VQLIp<{!>F-PAOkt&8ky4W+qRmYgkX{FM9Rg!xicGZKS=9b&$SHop_8f z(NB@;2k4RK_!z4HzF&AZv++XzeLd;FujBReC473y_1}Aev#$es(&$0;vCfgnWel`wrYag*gDrvdPS48uUdhT%E5P>E zP`9N2mazugxJe%X(1xBlLYY|a4-=geM@EWQG%vi{yY zMEyNBNd3KsG|wP2Zy^7V!J(+Xug9D29q6vtr}}$2^ETfNzptZ4ZG%ta@w&SM2p>)L z_pQKnCEinQ;Qn4}iF=RT2>lKt%db!M_jNq8{o?p{3#lsC-{sjZByJpBYGf7uQvDst z42&-o{sE|>{c;yN{AuFV7rss%crP{ktA)<&yQ%&z&)&y6Ue_`M)cV`a-6GbNpPEJe zU7AJx{Y0w2^+?0%X!E7nPYc_!F5qhef=clHYcGHQKJoXjp!T!y_g#JX`!?$D58>~t z6Muh#6#fL?!e^2fzz-6CKb!db&xybHQmeiQZGVIZ*JSGakHGRX)banB`1_yCIr(+r z?}7E-;7v9DuFg&)ep{w~{@0>@-VHK0WL>NbH<1}N_feBwhwju&{%*}q#rq7~Mwaup zJKKgQ-T1`$xXPaoeXdJs;@9-~c-hdYN^eaWsls+Vf;;UZFDBT^30uEcwFT{w zF(RiGRr|4HK|!tBa&RnLc(r$r;Cf`bt}U&tsDL^je+qlH_L^FQ7{{2dR=b#i6I87= zhdf^R0SHg+^wWMHBVLY)nL~`?<#|>+YqxV0RxUUS9`vsrf75Cy(>4|JY^8vfv)Y1V z*ILmX<%Z7NzzW4>`I&QMp* zwQ-({>nFR?y0#kaGA|~GhbvFH+IOwNxx$N}-gH_%j&-zhRCa0yUJ;)W`7eM#ggeN(MNH$>so`Bl|_sQO{dN0 zT0gDy9Jahj{;#1Ht)l*)G7SD-L91?i;{WN?|BGnhPo>Y>-)prpHY;gIO{HBN{J#wT zYd5Q%|EFTz*bdG2P;Zvdl62R?Wwga=4VTdak^k4yr+9Jv?}7h!(c0cmi#7QF`u`ID zAB6w3Nox$j|JT#%ehjUr{Qnv~Df$1gVe{Ahv-xjJz0`Aw{!36Ue;P4-miKG&G@kpXC_T$#M~qS~DbX-~Olf<}{QS#%7xt7& zrRCRV9I?F0{g8d)ovHI@zRz>ZQ^z@S^?mhVk0Fadd5#iu z`N_{huQx-KD;2{d)3o+3g;`jHQZ5ILz1R29Kg;uZt-&6%9$5BaqbIAET8^hr?F-n) zHeSRL+8mM`vq)j@)0okR_gAQWmX{Dda6YXqSgKgrzY=44V-GiA5`W7O3rjV&*c-=t zy&O#!X(Fzv?co?ZYPh|($VG1@sWBW5*NTUb>x&!n!t^k*{OEuCCcNjRvCqU=Jj7cl zy^?l%*(d|GhFIS~N{Dl433In>xn*zCU0k98OoUbby3Ve2)3Zl9kKl=rgnrSRN*emi z7}^NTt#*MLGBvFRjaBVp@FMb zhqwyQtJ>>_tLZy3W1jkQ+856CpAhR25W2>A`gaMJ914Fi^*>5w{oq3Xh3|TJYfE!&T+S)2 zOTXHyV$E4?K59{GzFuj+dHrXp%8!1edRyyP7Wz-WxUfFyuPvU=8+GqAJ?q>DQJvtG zw42CTAH7V(C8 z81>E-YF9pwJp-+CwFZ4A+eoYa(-P`_X0AmX`p>J-f9~j~wPOOY!oSx!w(1`7uqK!5 zKl2y`G~o;H9)+%X?YcZZt-XIWo*cxolagaEJZq);&pqWl^mA7l_1w{dB*op!FxpJ| z{8(4U6T>tuKrk8mR%pIhIbQpvJB4@h>x=`hYYpl@cQgq7=U$n5FX?}k>%U3B5_2K6 z5w_yDqs>xp|5l(?HuSa*{Ue&Uwj$-Vo)ssHq+4*e&8%k`gg)vcN3`p+5AonRT%%Jtt&N-$;z zxz!pPu+R<~L;Bqvt`Jmnr=CD!Wv~w(`R{EdRn{wTa1M|*MAFu z&h|yvGDP4exUOw-kKzgtngQS3QP!GvKKDZ#6t=#ooG%eAn~46#h7)pw_S&Zf+x&lKxvp z*{gtgBJisJmXlTJKRwXgw`L(wFQ#l)(NIzsfS+qs_@t3**Wq17YW1I9>^@se%x%b@ zUeg5GYmOHlQRM$ z$v`6+5l28pMQO95BB*ObZ4+ihMMX?)T(cP0Ro88^Yh=~cHS+#`=T^|Zyuw#hg{`!^1f9T0vvQjrVkT)Yu94sC<>uRr2!kN1uS<6j??;&{CEV(i~E z88mU^d6tzv0j`4O&Kl(SN`wgr0m_Kn@SX{8^d(I})K>l*XaZ)eTodUFhhDG*(Ah(f;u&Xp8fm zQEv-T?u%gm4h-$zG^E7XzrztSvVUt(4pm)@{W}LOnD68tgnDj{Tn2atmG+PCT_1~b zF!t|wCkfUR@5oKSd{jrYr`ceQ@Q(4xXu$zmDDB@YyoHv+TV)+^l}|`-aB;Z9<&w@z&#D_%+yoYvo$J&3!V`w-nd?AF+SOi2d6s z_U}s6-@Ri0Zb0mj{acLLL2du;K>1vT_87z4xp(3V-~)&{bBpJ6**f0AH%eNN1=VMKpan^uDITV+0I8`|M(X2a=gR57Ix%# zXu3vxdE5?mBmUivkd)!OuHDhX&P7ZsOYPrv$j76I>28F+9e;1E>g9oV5ii6Q%Qviz z{bR1*ENB1Li2dW6i$!QZbD%-#wxIyHxDoW|Z)GxIWH6+k6!H zEwg`@|3Uk=4JFbRZLb~j{#9uI?nat-z)IYOtMo=(hrLlAH>1@4j@jVpc#qZCzl|tq z5AE^2Qv3Heyg&OM?BA96PJ3kkPC=e%|IR}$X#XBUn2)Pmes`novj4~5CzRR0Z_t`9 zL`yjr*TdI{>twu3PWyKUX1I<0`yB7_(*9jvYXA7;K1QlvhyA-BZSfW4IEEZ- z!7m@7o8ZQ&dWN7@*k zTP{3f_RTih7bsz)bQn3tQPIK~jp!faiDq88Pbtoe8{M3Tpl%+U89?qwD|V~6nA9^i z&S7w2DmlABon`aKCIw6z=M*Yh%v>*HV7RjK;pnQF<2JLuoXs=&q>ktx_o<(`*!#k9 zFLKUTnYlHloby+VgJ(>-89UE1SDb}2rDoqS2nQrcLtc_#Ye`H3Gp*e5B z87-!Z`C(4X=q=|DSe7P79Jylux8n4hGNpc|hdD4lqfM(|OzcaU_p(h|IlIX5cFv!$ z+|4{KcJ{jDpf?oFYBPmgSQh*u7f0r~<;rIXrk%5+oSEawSq)QC75C>@@_ajiu`;d9 z59@-X?`%Wi`pl>H<~z2 z?ELBi%Z4*5jG^N6vmVWS8B@+DXwI&f`2;hY&Gya^oY6D07G_qIqbD4R=Xhhq*B8hB zm|uRGf?udG?`d<^(|nhRqw7qqY5&X}Ym{Zj-)@^@)<#7O+Y348EjTmC-~X8JRd6oL z%$>1rP5Wo*m@j2;wv@RwZK~?;i*rPiV^Qo)^P3l(kKjxi+ds!tIP1w)Ro4DFgU5H; z_rCDU{cQDS&Y9n{W&5XBE6#y%Hj-bIzO2LV*>En!lv&jN=?kL>gkQ+2XyJ^P`R*2H>^KJ)wSVfMJjZkS zb)MRYg6*HPUp}5nP5b9;N@eYzsp2>p=PmhlodS7Im|G{?W4$-!bPnKYdzo4x6osvyp87^+h-Hw)e%f zf6j~2#}(&V__jRTKRu2$MSOf?oxcz_^UrbYvtH^!TXV$CW6s!Bv@}9`_@S8@Q{b+_Kt{8N(oLW`d{ySl;r!~@2 zjQsY16n!nb(8%%QT;zrAzYnx=RJJXiB~AP9B<-RDbneUk^E)O35OaOR%=X^~M{S^| zKc3GUATGB5V#HL8v7?3UCf_$_6_eYvd`{#El z=%1JEzb)!KhExQo1AZl%Ux;pxV|squSNrEL+;i~U$!}hdMtsJfF#WUgyEsh|58Hod zXdi&1VORsyK|?2j9I^d#Jb83Q$=}QQsQnMXh@5HvJuz;`_TN8j|2?htKUCU(#lOcW zLMfZ}KNM# z(MTu10>lyB{V=M+xsHVxXKRJA+g`|S`{rGQaxYVKY!gZ2O}I& z`=49d{>P#gSA^~VP>j@!!zf)pNU>eallGseD0;L3)BdNSrA?Ife+*irx}i@Ler04NXisS9h>|)CwNr8XpMct{j`Xa8*syWMR63lM8} zj1;r|&y)6lI`UNYWgc>yhg7eZ_P+r2*ApY7IT+LHj}f9HaDDegi;3+2`O^N+s4)5^ zkU0qDQXMVu3~B!x(EjhhxlI`RW&6J!<-Aq3fBxd80mi%5VO;43j4Ez|d_{}h{;xuN zUW1XXC78)M5#tVbB9^l;CUrmB|5j=LXNv9Vg>kuFIKKsPSJwV_BBpkzvxBhhkI^vQ z{-42^aBch!`p(k!Pfxx*aOKhd??h>B1G#3O?SE^z_J1+T{wQ2eS0OL7|2w4ppO2b9 z17Cyq2l8Xu|GB7j)Bd+rR6H1cY>V6$qaELZ@!bn>rG14_$TyIePf@`X>9Mt?Lu z#8E7st%`IMzZoYo@9>*E@Tr$ERkko(S^7C<6s4cfp_MNjAK;sg=1Ja+z;XP>Jlj_; z&k+{p-=u@1VtjguMuIArH}7SeCouNE_{7bpNj{xby#%S>yz|Sk7RF}Y`Kw&N87HJh z>f@WPOcBT0Dt@N5W929gQ_bfXrhYwj+ zGu`ala#Vz)9DI(e>cX_L{^;Z9?-Lu(Kz!em_0M;DtD@i3KmC1j z)kx{{~_G^X*xVQSiIURjYrN7ropx5lN2R7*C*lU$$!X&o6JA`llyR zz9Y+Li6%H(mHNv=NK^lOf0p&nU-7g4oA2YPsjOUB|NPZGze2!w==feH-)`ft=_~G4 zmC2huQ~!KkZi*6M{d0Vw?eBx_<+zp9Kc8Ir7GVM8YM}&K|LhZ1z7*goo^SGXMqixo zUl-xXT>tISzpZ=;P*Qp5leI*7w?-W8knTTP|J@+lSL%O1#MD!savI^us_OOML0VgP z^g2!bbK4JTs(fiD_1{6p2k6T?s{eMV|6Y}gqtD3qE=Qu&hlce(4E?dz=%i?v4Nd(|K^^do zm|0b>|AA8flaXtFeX^;OK>Hhl(%`q{DqF^(l`anJe*mtTrFaWt1zP@8^t?w^CJgSv z(#}9z8H*BN{m(?Yb7Wh!`seqs_#W;8l>Kn4{uiVES64wl-}ah^dH$K0rRSSht?)#| z@4AgazrX7Be=2(NUC^JOk9T{{!(I|)c+nrK|I6|GWUl|kc#q_d)c?t0{qMxvPz!MV zv;G&M{&(QnqVnY|T>aOT*8fwGIStP`hgZ4&@5fix7UOx0*FV1-uoO>4@8YeXN8!8i zp32oD&1Z-8zY}kO+$QzE7TcF_{qx&sl`Ws3v`$9-e~9-r9z)5Wi!YDS{x8PU;h*(i zS?NX39A)8L?3(9^=$tv?dGn;AIcfBy!v1o3dCKul9%nPCw%`eJsv_MrBnd&)yb)gTx*zzu;u%u>5xXQT{m|-3s?*e#5RktS z*lo!F4bFWSV?0gO&se;#x&m(`^S$eP@b>5L^S=rCKUL-b3XDD5^>6b3e3<`-FrN5= zrT_oy{6{6lt=W&x;6#;{NRp#WCJtjos}_&Bt8h%pj7vp-d9SI;V#a3}(r7p1YTW<* zeQfWs@#)^AnpT>7w71As8euKFeS7nTfcV2T>X6|_hCcb53#yEKQ zV0d$XHSelbE^o@8`gk9tW{wT;ohRm{a(TWR#qkBEmiH!(5t>rqy_$8q?}hj6vUhv< zWX&%x@ckt-T2^`e@wfi0e~z-T#5mr^ZxC>#hReRM1M`Lt@7a9&h^5ajWHR6EGgQ7X zGUU{1bWn}Y~dR_{PKahepvt1%K1XZQF;0E_v7_&kK)@ed{*Qy$vHyC zkvjgZY+;|p{9c+p08{@QXW}p7eWb0jh5a4=`j27xl}g@)_`L$wN<+j^*}}JR_zn@< z4O3$3pYJaeNnDlHAHB`-H)^c^CddKnzX3{v_0N*1Oy1OgW5mL@Z&?5QEf{-He5ymUbBeZ*PWLf<=0(5GVk_dxwO!+qS;f2%6hKi@{_EcM?STT}l5dVG8% zV?WeuW%XAd?=SShn3|8?OB1Ake$h?+cS1@kum5%^anA4$M(qtoS+FPE6fyGsrKeV6AL1^}j!IQ5!wLu~PpBAuqF~{^wLCj#4VC|3#?(spuz~`k#qDXT|S@ zL=pGK+ZeyE|5@nqRlWX?mHHowo?#QnC8hrN$Mw(pp8z%cw*OK6pNRTD5i|dXAqTAg zByzSkO5{Gab@0Z(p%|rE64w88(n_0P9F9E?dhm|vfTYrw(m z`X8(Rt*HO4$mu$?8P@-7_+_b$ak{05XWvT`d=s-Z=Ix8|#(=5+6X5yb7|g-*`ro;4 zVNhNFM?&tou>K#x?~Kxw%J+r@e>b-Zso0E?ScUazssGJri>E_=-}ScvzdzcF+}>AO z|5xMs|Etvhja8`s8*#;L!S(+u#=}_u?_*qUGwMH!oc)42tZezervC4Coz$6OT|AFc ziJAr+5T%aTM=4zexf`&)4%xq9dn>kABYZ1tZ-VR&>~nh^w!B<-WB(wmOG8~aReo^+ zDIi`H#Bl;_r&rxElD=-rI%bJ#wQ^=j9KCB;N|B#SzdrElByf7aO-yCr;uRLa+8i(PhVv7M_iR(n{ zBOK#`GZPaQI#Tm-j&X9!mFG@2=S24j2>&k5g?ds4VxQ|Qvx;8CC$c9&4*D6Nlft&r zGDf)nR~G4&qXM~QJ)*~rzj$u)anAGj@ap2o?0G&O56I$m>eX-9sBx2~&6@8Qv~1O; zUHdR`k3je@$j{?gFUJ0p*gl2zGOW*Ft$}m3vA&6Hqs*O4ajqWL5s+tHjKVpTp_C`j zPr%9n1lGfLtZ1v!HW}u4gk{@By|c|SOlllf%21Z|zDf-lNZU;ChRkBd)ulcqqKFjW4SiMW2-Hr zhH%m4{7xgoKa6v1YfKkcw!vt>tS-D9FE=me_wu(x?^fvFhV7l$o{H@P$e)J&Gq8Us z_J6{<3_A8;{T}EGn z&@~qQqp+PAt~giK1#OUa1QE-nD@FyEFm4+j29CI}b^7MN3`R2SUKZpr^;evK2HR(` z@}ArY$GE>s-=rP3BXC@dbuw0V&9TZk9H)wK+z?x~1BO9(;fy2Vc6j!c7#?w^(7k2f zDRmrH$g5+X3%SG>9Y^|@CdR)Pc{_bf5A!2B5MLBml%G<0D?Ln~q>=iePu7|^R}1UD z7O4-^i-&)_mc-1nPH+#;@lhE$SiBrwxt=FiFRT{+`#JbuLBvNwe+k%1Y*%5s6l+K9 zvpp}zwjewnhkdR%R_Cg~_ZD7sgz=T`TgRp6D$r;1(*1p;uQbeF(o3dzE{?HEe$lE^ z;mUIrF1%jkCd7MOPPM$;YPqqz+*p2oUVcFV?!q;ySFc&KMvcP4nuSHRYSpS;yQnB$ zr*^zfUHo@k{6{VBZE1$q~lktEpW_!D%;MZI6nvLDD2Z-rmEwZZqvm9KVDuuhBQK z{vF3#u{{P`^e5TRax&P`-ad{kuW_u>=lmzO+p)ffbBGJC(mSd5vHjn+AkSRFP3bl| z!}B?@>g<%(soOB@mbY#rGWMVIkZ#@wZpHQzY%jx>`DWfWV`aX!U`sp2@|}q-%2ezq z_A$J|PuiLCJOx|Y0G>x3q!wda^(99-)(lTu6Q-Tl5bv>NgMCqkaSltW7TUyD*x8N! ze`7^I-)Vqz4YBfGcMewEzocKx`*vM$rf)vZqu;=Lxb#E{XmwJ^wloGmSsgb=9y)+2&u}|BKyhrsX`3J*rqPfqrUQfn)8jerL_9SePFDWCoedH_E729I0|7(i} zG2Cr(aN8-1Ak0_UiM{Q82Hl@y$f%h5c8sWqDM- zxVQ`Ma}k@d5kYQ1oY!F+m01GEup5|;H&gCBPdh{Va00gTu-)e(iYwL6F&AmS!?Ep- z2zjm9TV5MrYT+FotDO4~e?P%m4P}>$^%U$=ra#s}Sf?UB-uDi|x(q9>S-E#VkL@OK zv!L*?n7`&s__y>L!~H{^y_;a$8f$Z`Ef5FO3SIVA`fo?$+@WA*L27Z|i;nCq?K#R8 zLw+V61WGlmF@D(t=HP?6z5n!IG^G%%M@D~)8KJOtVyg`sGqAm(w3Ehfxr99zP{ugWrsmoDOX7c)6gF0 zSf)%@c+7H_@+a$pmFZx8P!G!;i_y&|Q1tk7qHz<$e*YKu*7>++&xCCn>P$c@#D_KU zcPiGIXq%(3PQ|svk1Ebg9fTYYFW1^7N_K7K@d7{lLB5fQP*cxT_Y_~pZ{pM{-L^@| zKRE}7Z#Y5-o@UbB8-^;$J*73Af|^J~WoYt?Ji zuu;Q$wd==g)QLB$-?>Y-;vPMF_3qQRU;hDv1`i!JJk-bx;lJ+})^Po5eqQyWntAy} zId$vSj>oFkt=^!1y*dT;>(y`7wq5%U9Xs(ZrWY0*%w-KXC#L|)DIbf~L;?!q^%^w` zT9)fFpD zUcE+M^}L#VVyT&rTr_CdxJhf83?>9+ke8R2k3coiJ1rL@%F0Lc!edX3>Ub59hFc0P zFNUX~>L{x2Jsl*ZUw>!Z^5qK`&s!c$3)(CwF!6Nl+HLuQlKFENFI+Kq(bDA$S9LpV z#gvst&Yv>B+lrMFM@|_rH#(j>d`$PbbJ{GJJFU&Cxx;46>d|#RzQs9W-ij4Rt`6p} zTsUv_!oX>@bjAGTM=w|y3|h5%!O|70yDk}m_a{qFE4FmUawE!h(as zfd~`gC{o1{5rfELg^S`rUc!_Q+-p2#9LcRfmnjdzZruXLws6&|VDZW$k1h$0UAlTn z&^;J2c@@(@{Z`T?IfH}tQMNh+ZAlPPOdBqj8yAW ztU@_x`JKK>bo|T}~8MwpM{c?LkWqK~hWRmL(9Xak8`=BUv^)gq(W>+u_{#$E;phvb5h^{OR7O zy%l9}(6U21h;UdBmVEb$<;&FXLmtVsk}z+ojZvWvo~j&yQc^>laY9;Mup=ap8q zWS5CMmOS+%-Buj`OX)6|H~(-ew=9Y1`tM#^+)8gpsZ#_jOMS`0l}8-CdSS0MeR{Fr z`t)jV3a)s~$bO8(PPSJO~iGxj5ltCH$NGK?WcEkssR$(wROWEEaIdujUR@=;ZJWFv?g zarx_yi7iWqZijY8Dyr2RVb|5 zc}eY3NMSYYci7Mwp^j^OWwLB_mPj%n@R=wD78Zs@Y1TUfJb#$Q8`AnSP_rvu_7MT zWJSERF87|k9+lK%kJ5UqK)#al8`L8zzzXCmDZd_-lwXfZ%CAQy<=3N<^6ODa`SmO< zKevfL5W{~mv^8bjPkYjAbg7^AaCrPnY@f!q-910;`4roE|N3bUhZ5f%@bjMb*j_y7 z=RISw4L1C|X9>0&vBhf!veY#j$31?UYmzx8!Mt8Hu$S(mbFSc7_!eo#BnBnd|rN z1=YeA;B?>Z74y@;r+)g=o)f3q@@u9>^4H_^*8V^5*}*)P#(%dP@h5P4^uV9@DnAnJ zL#*4*{dvzqY@OkSMdy2?3L9?lM->L=<%}w9e{Qw0g~ey&jxFqWYTl&6#PY&^!wQRs z6}BH<7z{6Li15P;`DIkc=?wjEBA#dnjnVzN{8<8jmcXAS@Mj79UtR)v2`PYVuGvPV z5#E-aXj>x$ORAZ0nD&z8wYtM(D}(XaE7~A;D@-MsB^GX@x%!47=lz#U#Q*c#9?l#) zmwE|q@as6UWc-BexBd5(mL zx&OeVmFuC&4>}N&$a~4S_ZM6*Uh94c@4LC}(O7-2TEFRtA*UJ!svSR8tqvyPy^9#E zc&-GCwM8)RBIxkCAH_3XUI7y6ebx(qdY;NNIeD3p*u?T4;Kt4E#)xCp3K13N=I*8Z zF^JKBZ9PNBaxTJ)0N#U0XU@5kaK@{P>BF4!xQjS8bi!2|%Z+WqVQ%aL{LSO8Hy$(M z)r!BxZfrDm-^~4fHR?J4XCy55htW9g@OT`wjEI z>yG_B+z$$d!`k3OB|K7bF0b0*n-DK z;UHHIrWEi8Ik|aqFsoqV5FF&Yw;_qif>+`=sP5i{gCzxgDKEFC%M_Os^g7A2m;khuM$?-S6c~a5+y&+bef&5MB zbwvlDF}d--$zk@S+KU$84bV?;1*#j(b-^Zi_MXqlJa$+2&B;Vg{6N$YY z&PVzGj`=@%kc2F#AC^=D92Q+a1LV{hLW&eQisbYXA@vpEFM9IMTrZ@lO+@e2I4^o@ zIz>a#!t&N{myj)^kmuvDs3ys|FA6DETaYW0LbfS#DaqBx3)!VeGhFL=*IXoIw@su4 z-i-56S|4UzZFyKi1`Wa*xD1C9^3^D0o>MfY4MN`Zsf0{NAs>%I{u+hMaf*7wH0RwC zhY`&8Gf~Jd8FCR?bvvAowD$`T^7cUzG8=_#fI|s6H3|vsehY-WW08am8iwf{7KJ<^ z3JL9p!|3GQxluwEMWBtkyEMM5T{kSF7?XdO&w z-jf+2DMjjy0{QD(Lee&o*uTbksmGyCQD54iXLHa`MvX@y|H;^od?w^7MGoi((lrOqE&2ZSiX4m3v2M+U+@i>D zsG?YLKOx%`!S@oJSodi{?p0)cLy#WJg*>Rpb12PN&ohKPrpV^@AidH;o>t@~=Ct=t zAunn|J$+si@|q$i3YNj3q_g@ z02w$#$Ty1k9YF?_2>Guf_n}u48@yh~Z;A{=Uo$r3dLcPY!d574XGb%Tp$`iwP-GUa z=~&`TAw`N*8xJz<8zJ=-nKlJvc#Rq?gQkjHLNcPQkd}&co&hp4A*8(`yO7Y>s5wHq zDsmJqt=Q<*LV78(3mxXzm<>V(DDpVY#m3$wB%w%*GUFZ-GFp+MIw0fU5i(Jc&KLuT zP555OG)3m_2Qsk;apwE86bWFHVv{-wIaHDU`-4m#DP(~nE75(6?SH6{Ws119L8hz` zQliL#O!d?YgdC&DQ!PQJ-6mwMBBvb)a==qUPEq6u+_+=YvqH{NpbcGcn2?kr57SC4Tx;|wQlB<-(Zxnj zb6d|fv~7#oM?>#ik@smsmpp6qC~`M#=+Y039z{N8PM7^=^z3Kr`IveRZ&)OH6uE#l zba@XUDMfym406OoAsI!!rVU-ONQe{IdS0guJ(53*M1BUBk+l?MY zUZf3O`J&O&!qzjb8_23pjUGi_q77Z`;d;#XQ;Hl(8+vq8AsI!Q(uN+>M~KtX*0Xd9 z$gxv|Box_7vSyjlqsR!_(Bn=sdK5X2sP=vuQ(5*kSZ2@+q$9*xFZ&9!1`Q zy^Edrh0&wPev~;W7rh6FX&v z(bLA(Gj)HEQ_nJb6j@IjdfK%{k0K3`li2AG8a;|EXR6P5!{}*i>v@+p^vvBxk0P6C zL(eLJB-()@?eOdrJG-@zj3R{?w1}-ABE)HD>p7RDbIvRw2}KT|4Lx_I(W6KU+R*dP zHF^{|p$Eu@Ek;j!TTg3Rr1LXIk4?mezK!$7ddgpXAMSeCyVwQ0C44Fh|0E8J&M5}D zumCy2mDnNFA>=sP(2H6NaXQ-M@u?tx86qU3$a%CZ7ta!s>SW8j&lF#>(&*u%JeEAs zb24q{rRN$wU2Jj#ZRllNj2=arcLljTWAt>jWjY@Ka>ZLlPdA(Fpl#dyozYWllOJhA zuPm&`GRP?MEN$pj?S-Ve+cLj0r&kXblIWob^`s9L;`Fr1&9tG{9Aoq-Qj^!gwHu9| zUbajw?csH|7(Kmh@&#?^^-mZ*eQYv;GB>jh?=?%ty4LH^%ErJLqSV zrL>_pbr$0Ex5>w}p*N2fl2POg+R$5)LQ(^4nVz(vw;pfw475p#mhv`^DZm;HvdNPq zw{JCi6qz#vWb4yHQiE-oPjC>s<9#8CAvU>&HgwxBLY$#C!S@E8*q!y!Qqc|+`8RFo zUByCD30tNQZRp+Og(QaAg!Un}eSr{XxJ?eGmAL05qeqeRX+!V5)aV&u%b*CH*nM{y zJtJ+hlx=6n^G44on_Np9djH2pk0RY@Lw9m+2v%>jEpsYU{Xkjh+cMIh;21(R+;^Mf&#w zd2E-_Gtrj0kT&%3&y1c)HW`F+i9L~nbfCRWwuso!{cv8aXEphY(VU%Z9e?d5;WJVA zd>j^CLmT?^WFf)+VN62Krwx5(iI9{cf2R$7_7ovmMXsY|d2X|i#1uQWADQCk?-i0( zqzT*S3%i6kQ*D_CX+vN9Oh{6Z*JveP%4saEU6J9mp}U$338vYxebNQw<$gj^iWKz) zd1acAtRnBxhQ7L7Na6rHwz`u*UOPibS`(x<_Ig@~Gu@WS(1yOTQ%F*gR=f`W_L`84 zB3o#4-uy~PaG)LAv7JEv9z%=6b)d*$13=ztDI}}NSlZCH2MI~cuw(m$HuRktLeh$) zXhZ)|BE*?#%lt|k`tEumNky)t4gDvt23R9S#xpQ?AU6z26^vIAt^=Pp$&ci z8zEUmKI;eaL5-%=lbCJCmZ5e1u&t1^BKOmVev}a6%&}z}@+$dwj*z4x!!eo{`((9{ zj3Se0LqFXhBsj>9js4l!zitweQsnK?AfG)ZB&*1cw4tBBBP4OK9orJx&@a9hl2+to zww*7FP#3TThuAVZX+yv2C?u)KXr}G!kwP+xTuvLh`%odlp>}MA7`cx9dySBkBG1!? zesh74tRk~}gM53Nki=X&wqEGV#J+nc|l2l|WZRihm zn@f9BQ+vPQyZqwte(Sact4 z=&u(DNgNjH5OM=;=x?_PNh|U-ZRnn-ggEmpnfU#*p^p2Wprk@YxD~`)_ZLAKg>K-L z;JFRZfb#udfgRziG^4)TLr_YgUR{B5+)0A63eBP+t>!Kflvrp-*pPR|T=!H#X@%O+ zl;*it333+MQmt8gG53B!NrgJmnC82$3Cd_hYg*ubEht!QNBFlvK-JxXfLTr{)Qq;V zhTBF^R-uPzfNHu4L5U@HgqKjN&^<^{TA|};Qfs-#2y&L%Qgdlji`-3uk_y!s3RK&@ zO;ARmD~RImUj+rr>N72@{cN;-C-%lzuk;b-z+e=VJq1R|_JG%P| z3Rc+>Uf~0Ea+e88DYTUKwzGS>psYfV)8KY-(}EJK?Fg6C;&yc(5R|r&nA|sT-gH>y zFC52w%ofw#{Xztsqr-YQVO-B+3n-55|mcxL7LsZ?gl{_g*a~&>*wAqD67zTn%(~H6M~#$?0l`D*&X2i zQ&6B#!{I;!-Jb*{6dFRaJIJlqM(SRn|FR1^*ew>6QfN5M?hto^ptM3kAE2S`B0(92 zzM|PpxF-wBD%6t(beOwYkaMh^uh(dvhP(F(3KZH(sS)lgf)WaCq}d(mekmxa&@nW- zquf|qW;vx$N7~lWZYx1)g)U)dc8ohjP)4CnG`nNn*@ChPJx8-U&Rs3YS!3sG4f8eL zJzr3u(7~vv*aY_$K?#KlXw)XUPYOyZ)R1O(lA9HjQs^t1-O29Hg3=28i)MF!w|+a8 zMn)mdaKxs#-34V8I%_1*RCl5v=QulGE7`A|<}MZ#D1?t=W9r5|MNmSaF=K$HyH^TI zD)cv+-2>enf>H`yO0zq|eN|9ep*v}IXS!br$|&@i2QpmqYqtM+xP}1e2C-SAx$uzt3++PGaC)oLVn`ZYgw?PL=1qz);vpe7IAt+%Z zF}ss+UJPz5GP}R9#Vm5?i$F3G=!?Vn2Q<5j-ID~R6?&OwcZqwMpsYeoXm*#n+XV${ z!*ol8*U;=Pb6*maRA>mz?&0odMwddb((EpGtHB1Kj1+PUfR1njLBWZ(t|ZOw3U{EO zq(Z0B>>laP5R_JEKFw~4dz7H8LI=|99_5~Ebe&}Ds)ba?R=PJDT?);n*KNAI1Y6>vk2CR_IAet#K)gGF0eB zn%(2v1%iT6O>eF7|rep?&X5g3T>s?UF+UsbSX5PX7@yQm(g{yt?T_f zpp)FsjV^`GXTH|CxoC6f`YFWQbS&kz5R_G@1$rO+5!le^q8f_5vkm=^hN_b@?4=h*p*O$XZUo+zkTp-WjB_qdk|nxatC2|)L{ zcMB>}s5Wc)KKDgI8x;xypdIeN1Z`93{joszyE#3WC z5L9%oov$Bxr+LslP*AZ#$MGKjkXs^XibB_;R~mcRJx5T9LQm7SKH_c>v{9j-SsEGl zQ9;`j`ka@;qwYI`b}7_@t@kna2SK|PTHGG!aW{_2&i9MXv-8!J4d4m4i=bkKt|$U} z(j6;kib9|9M*fsLUr>ocb(#VF)jdhjMukpAMa7<} z?Cx?ogp3EtNT3Z4;|&XdUUruY3eFExAn03~-B;W*1!WX^c^c5G?zMuF8*QnvG`p|4 z4+(NM*=Re>?(6QGg3=0&WV3j~{Z>%o0$b`G-aP;27UFJ*PMkuUX?EXqI|xc$XiMd= z)BSgMq@ds;8_nhg`Ib9ZP)4D3Q-R)gj~A5ui!DXF7<8~uv@O6(u*HbH5H z*6<2{*L_Y<;u2eG2hHw3-H!!j6*`R#H|x3>p+J3IYD>*!rM%}h6%<@%qY2f4-go)p zG#-!@`i^Gz19zIB4zSISrJ34#*W*itcGt6#ep3(6`qpO$O4d#9k(wYJn^ zw)ua%&kG8!v(arh7yHKjL{LVd*O}#ST@TNI`F`?xTk7xwfxdH_336_*QQe6^|8e^X zN-NZpm&5liUnALwWIEkVhfZK=*QyT7>q5#-!rqn$Lnzq&=}!r)0rp*jc``_1hnC~>PT zmB(7%%0Of`Z#^bOX(<=UpNwVS9n{my`ZE*wP}Oec_Rd+6&lVvO?&T9 zL0N_FA?n~AXLQ|X>uQkz>gZi$bSdPU1zia>ftRH zlvLyj zJ{m==pI3+;JKDUB#O!v!dDG98zjd5=d$yPX-cS(;9tcywiRySQ-bn^}a|C4+x}Iit zkax78BnsALk* zFz**ZsYh%npVnl!*8pt_S3<@{YgttzydHuw3dLz?MtYM3B_Fk=&Y-SQ-V#C1V>a?e z1C91h6_i%!UE0<$-c^DUkK0nsiN<>O3(6{VEY0pX?=?ZGCv2%UG`r)yuLT89+Grfj z?gXy@=g{?2s1?obM6ZpYePAy6Vr^QpeL2PV=Y)_4TZcPN&&DzK$H{hk3^e3SP5OYnt8p z-UWg(3N@kGUEtj=DEYcA^>TBdh2GPGoHuNARSTd+-Uoux3hm~#yx99qP~va4R6m;C zC0-*8uEP{6bT@6(Qm>bw)SI@{7@FN>-u{AuzuV|ln%%>_Wr8vaHKEyE?wu|u`IaRm zW;c!VVsLZhZ_J4gVT)Pe@iPu+oo|N%>v0%wL$iCN_p*sgp`A3lCEgc;G78mW!#&E& z8^s8NckBqCqS;;PwG@<6XbsKoDsQl$tU^UofL4361SS4qM>vWFakRHeP+FnJv?j-R z8w5G;+EN#`0Xo*ZSx{1;C-`u;#(P3gMxnbW0UhW4Q&8|vJHkdZyT^M!2}&vSAKKOv zym|u+-(OR!qP$FwbxPfN(L~nwiv_gYuc2Dva33A@ErQXJvL~NaRvY@0w19E{< z-ey4=h32xLPWJ8-6wtO|$&&`Kf@b#=?-fBQh3=)XL+g0c#&qS-yy%L+<-Y)9C?JHG zUF7W$l=zn&VI0?Y>@VJ{g3=0ohrGrv_P!G2d}d1x!nxQbUOrk+zMoX6C(Z7qUTZ-a zh5kjedzm*>Q1H1O;k_+@F8AgLN+}d;3v`8dw4kg)Q;0Tu8wDl4up|7kBhZ!Jt%A}D z&8-G>mG_h&=Sy4ab6T6Lz4rtq73xW|oA!PYl(CVR-3H@Bvul3$;5qT>G`rV&T>xMu zzY5j3IE)XZ*}cviD=4WDKTHz4-kUEdtxzX6+#9@;1Z5R^hh}$+cbTBzYg^X_n%x_{ z?M9bEZE1FI@?J8!6uOe8@MiBbqf4R9O@VIls=+)UU%PExx3mGe)e8hA70PW7belI& zP+FlZb=~gG5R_GjmNT~1JId(#x2$;m}_W^I0(WTG| zmd1nL=SG)853#rVke7>U!wpZNFRKGR?6nXS{KwX{xeL%E-XK9qh1S#TX1tk#(h5ys zvw758DJZMZ>omKMdHiY_+Tr)Mt{F7Dk9#*6T?(B^+xmp}xY4E1uS8FJ?;2eSU0WOI zDep(4>jzucaGKq}dUa8h`F>KNJ85>G_PPm5E7Xx@_Ze@zpsYf7^ZI($TPP^_udQo3 z&F*tv%IH#P0?qF8-W5idLhgP*FL?JFT?)O}0_a8WWuxmyTi0R?bH-lszA(BJT0*nC z%gfte+Pp&5Isv`xwG@<9=vZ2|SG>W3f}d<%KAX*}-Yh{$g(lGKzUHkmx)fSg3+N4R zgP?4LnCr4@P>O)2&dZ-StVLeH@Qyz4CzlvU_a8rXk&Ckt|ZvGer< z`?Xnbv!FmD>Uz(+Pf$Xk=`^tKd#?yeDzuw+;{)$YK`DiLb^!X&i%pdVpwMq@*dKYV z1Z5O@mL}z6Z-}6*LiseypLnwcIef&%k|*`Gga-CgZ?&L6q4Q{9|K*)8D520*xJ}1C z^KKE8ROmw**w4Ku1*H^vurAOSURF?Ap*v_`zw~|9P3+gMcKH357p+e8%>WO{r zbrHGsbHP7#z;=x(;&Z@nu8r4+h`2KGB| zhoH1VPYeh8kN2vej6z=oK;L^`3Cb#TL=n&rUOui0bb0sK`MQc$^uJzfL4iW`4g~tq z8!9NF(9YUGKY4QmB^8=O1N*agw4jti&m@3;@iq!dD>R$!@K^6vK^cYK=k@iQ$46Dv zmqN>FVE1_M35wj0ns)dQYuWLC5fp^J8Vzbh1MB(?kaIi^DfDp*AkXh1D5=o?Xi72P zpCl-yP>KdN$6q2St!zxHdKmw^QHsu+G4aRcpmfnN=kiQGm4e@D3ZHg>$K`+=a8LhE=Vui+0Alu_tW z-f3$3GXyzam^g{>qPjqZ{!vDkLbvfssO6t)bSZQqE4awN(dbgBbvK~e{$oa$Z|mya z87S`m!{}0I4o1IYb^QMtT?&1Qt0Pv|uQP+Ckx}RcUL^JWu7aE#Ti0(rfa?3>1SJ%z z-xH{Tzd%q*p^Fejtf9Zo=u)U|6QD-^S6>)?+Ux*n0Z21f>*O(F&-Szsl%R==zR8z5NYFR}EWN z2^)4F|7N30p(A&;vSz`{Gfl@mCeJ;?EX-Gi9@ zl1SiF3ao)ZH=Gv@W;nXG6Yoe3ll@U5kd6cz;ZQUr%L$xG4g34Yh(J&j=3zVqs9{qi z5PfkXK7Jqs4)AXjfm9@L0tJ|d$I1y@M-9{cH$@;(JJfI+1*qZMNFe$>c6`}D2+Z>H z50(ot68HxNsG&8^OQuT&9-)TW{s0jO;-Q8@9EyemwE#wsy0T6W@(&k*WF#<@0@QFu zIe{y3A#kw2Sp+hXKnVqyhx;OdJV_YtFu3G~OI zq$^cU;9HjMQvYHR*c}Nh!(p5c(Xqq*I|T)G!z44VI6rqATkbzEs3by^l5~B79Z6T| zEAnUaiY@Vf6@hdl@G=EhUJVcZy#Rld8#~JH3XtzV9SL|ij6c&0Xq7)sP&Pu0EB+k~ z-fDk=pjf>y$&`|Gt;3F_tMnbxS9xPydF8hU5IFL?Br|)NnZt zF+piG1qSG;{|ptb%lf*ekDV#yP!4|%&i$!{>18BIn=q%LU$w9fA#DBZ}C zlH5$fdC5)bt66=TLf}+?z6dytLxH|Hl-!(DPGAK)52yJTiNKUdUB9M**I^$3@tkMFgjDrdwaGrm*2xKCGLny#JTwhLLT0IDC z@OO&9u1H`51(=7|BZ1OM!x|$Xu*v^i1hSF9BNU*9+<9T9O9i&DlrHd_0$?DtS(xeF z6rhH_S|HbnKgUwK$e$zv*+`%T4n@O~asqo;N`LWB5`k3nP{T9|P{U=BKB z+`mHvGLgWk6kr~nEhq4p3xO;AtOykC7i!p!!}#Y+?Unw|f)Wv8T=6D3Kv((o4`a?Z zMu<|9uI@N5ZQP^_miGkKUfLfc0+~pl2@WM)hm{jp!P>jVUn2s$BY}xHjL&5rulFw$ zKPb@ettH~P;AN=8Ve`Z6~+`5y{OM@XcuV7hPd_Xx^F zNTk*?g}3^R=d%o)7Q;<4O09fvoVTng%7D{Uv910D5eOoI{ctE{u&A8C5e*@5hrdP@t#$te|%y#3`xxtCV`$|5?!P2#M5PlzPUmzmP>xqji`Wk$Rn_^PJyZ zP!J)J8aoW=d4HmyK@p;qG=Rl8FDWkV0Cye%fmi$!MPPg+FcpXK(L}HLmkOE^A@)Jz zNuoFWy9K2p#Li>J`ez3u`eHox_q*oFNMoijPcIZhERk#UZ*36Iddu>Ri5&j)Kb%c;ycPEG9`r>=62Q(rm9X};UD zoa5~GksO82aRSRZPUsLvoZ}2+-^tq)I>#AojzZ@+L)cCFA99Y9=>h|TrE=#uyQ7em zI>(814dX259H+J-wsV}uigbq2ik#!LvWeV;p2;b_(JSXT#ZgG!V3l*6DT>(6aY}3= zu~+0AXMGg1oO7IwirCI^E>^^Yy^WmXY_^H$t;jjfwNXgkgq3rgZHm~=aUQmb#9one zoLy1Ka?WvfD`GpxDdMe6+6+@!n_Hwo#O;H*{5@yL=>`| zbDWeSwsV|}O{D9-Z|68p&oG_koa5vwGKupIp>v!XirCI^;)>YLaT+ROJI86Ri0vGw zwIa52oQ{gv&T)zrv7O`eQN(tRGe{BJInHoJZ09&*6|tS;OxA=?ouPA_>5ACSapovu zJI6^XVmrrKq=@YtXSpJ_bDWim*v@g*C}KOuIY|-QInHT{*v@g*D`Gpx*{F!^9Oq(1 zZ09(e6|tS;T&sxf9OouQcHu4^Img+m$Wbwn&^gX_MQrCdI~B2=<75=Eo#Q;Ei0vHb zc|~mJIIk#TJI8rbkpTC!$T`ltirCI^K2&6-2bs`0&S#3)&T)1tVmrtAUXiC-BDT;u z&M%7C&T+h6wsofba&T&$T*v@e>irCI^oZexXNo=-roP;8_bDWeSwsV|}BDQlJr;n}2c8-%!#CDF8 zQp9$SlTpNWj^p&T_1MmF5{lT)aZ;MlhK9~@GK$#Fah!g(9@{xiLJ`|JPD&BmIZj3q z{`fj_j^p&V^)&7X5<168C}KOuNhxAG$H^#SJI8Sb*m{oSTLPhToP;8_bDWeSwsV|} zBDQlJXP~Xec8-%!#CDF8Qp9$SlTpNWj^hln_1MmF5{lT)aZ-xd&T%q|*v@gB!L}aT zIZi^6ezc*XbDWeSwsV|}BI`ZKgwAoCA+{ddIZi?m+c{23k#}1nw$M3FMiJXNjx*HO zV>`!5C{oA)*3dalN)g*RPDYUfe8_~(ah!y$$99gBP~?OjkO`gRq!el003>vdld*}| z(0x0{afXH3%Q?r%C}KOuNe#DUZ09(M5jL@%<2WO2VmrslC}KOuNsY2)Z09(M(KfN2 z<2Yk%VmrslC}KOuNsYB-Z09%$j=N$pj(cq9IL>&R*v@e>n$U)Z&T&!`Y#G}*PGX`> zZ09)6B%9dIaWab7&T&$cZ5i7+PGWzX*v@gBDK@d4<75=Eo#UjY+A_9toWwMn*v@gB z18ibD$H^#SJI6^)w`FYSIEe#oVmrriX4r(k(u$npWE8QT&+9LG7>CU~{G)HzN@5!*RV>JVGzS`RXz zbDYGXHnE-KICE`cJIBc=@_kFh7COgCC2bkoIZk4pO>E~l&S5sOo#SK_v7O_j=G!ud z(}sr5aS{t`Vmrri7TUyij+0Tuc8-%;WXXsP-M4d`#Nse~Ip;WOMQrCd&JtV3c8-%& z#CDF8QN(tR6D+l3vz_Cl6tSJ-WEFXhJ+06=PGXrIo9!GYt%&U$$2r`Vv7O^26?v~c z^n}iFGK$#Faf0P`Y<2lAO6VLXrHJhuC##6<94B#v9h>bOC#{I>9LHH<%h=9wl8V^Q zaWab7&T)bx?bvMRI4MPJ=QvqKZ09(M5<52AIZj#;+c}PNlr3XB$4M$;JIBc=VmrqP zR@$-I&T&$T*v@gXirCI^607XkZ09&>MQrCd&T3ocZOptx&T*28*v@e>iY%cG4V~iz zN87R4&T&$T?DQZLI>*T>Vmrr49An33JI6^YVmrrij`q!m2;f5LdrRgbD}M!oZ}=FQqFNQ3MuC}!AW+6$~jI-A>|w= ztB`VzlUQd**ooFOa*mT$NIA!GQnr+Gj+0bKImgK;q@3dfC)*J!=Qt^alyjV{LdrQ# z;uJeVJq zk#n51LdrRgbA~OYoZ}=FQqFNQ3MuC}!I^f1$~jI-A>|w=t5AwYHgb-WILnSuImbyW z^oj?m$T^O4wk@Tc<0KVQ&T%pdDd#xBdOJep94Doaa*mT#NIAzzoMT6*oa3YwQqFOl zb8RW*94D!ea*mTxNIAy|&a)yElUs>%oKz$rzt>dGancGY=QtUKlyjV{LdrRgvms2J z=u*yc0)>=woPOIBA8HbDWGq$~jI}A>|y$*<|NSImZbUQqFM_3MuC}NrlcD zi7ZFXaZ(B?=QwGF9KJ~yImgK;q@3eq6;jS|oD1xHT}rbXImZbUQqFM_3Vr55DsqmK zR7g3;Nhze9|w= zt&nn#lT}DL#|bXAbt&gKNrjYioU}s9IZjp~|xrw?fJ}PSG`Cx_QqFOT6;jS|rYNMG|yWL?PuIXQM(nEfHbl z9A}$C$~n$18;RMi#5s<0W0Pq!m)maT2%NQp!0_R-vS%nUy*^Qjzr0%w*X3*?L z&T)e6Hd4-UG72f@ILUi#Ddil;xz|R@IZj$38a*pFXU?b%mC#{fjj+1!MmQv1fvI;5ZIH`whDdij|c-ThD zIZj3))u%(o99Op?J{Xguz3Ai0qmA_s0-V8SkF@!;8icv%%10f_bSj;no zK?NLAKoW>Ra?OA^7vg}57!+GtZ7Bzwhd2+=TH0#k92L~I9m-Z5L8I-|DEi-3wbr@o zUHcsF{kro!&DRgRXyb8hx~@jjuK%5h3WkmF>ZH@(`+?gVn2T06vY zob+F%RvST%lOuv0r$hufPK^k1ob(Pm7UVcNBFJ${M3Cduh#<#FzhK9L94AKvIZlZP za-13wC$4S3r$ATOuM+7-ei3oC>8WH3;>6h(T zkmKZt_Sh#(UgbC?BFJ%SM3Cd8U$J9Bj*}yT9H&GCIZllTa-8(5b}Yzoazv2hl!!Jo z&v2FF)QBL*Nxx>tf*dDD1UXKLXzwhHrE;7a(S6O!q{?y9O?Ir6O)r(>LC;hq|3v!$s5#%@}q8IHQW~g$U8WH3;={M|HkmKZtAjc^Y%?bbZuqVf<5#82o zh@oKTwU^xqk$DnyXur2l0LLXJ}) zf*hwt1UXK2pDhSEPKgL|oa8UI7vwlOBFJ$nM5pZ&9%Yr|q<^&qA;&2YL5@=+f*dEi z-xh=%r$hufPVzU~3v!$s(c0z{MwR1Kh#<#F|85I@vbpT49H&48IZllTa-1wVE@^&s z#v;gZNLBk$EguPj+0F@1>4K+1ah2G zJH&FF8d0+`Nl%WGPM2ZYUXbJDh#{yWF%bF{)%5l=!b}Yzoazv2hl!ze5sS!br zlWuRvf*dE;sQsx~$Z-lpkmHnyj%jw%R5?zC2y&bn5#%_@4l=`b8j$0ph#<$w5J8TU zBZ3^KKm<8X$*B2RTb1Kfh#<$Q5kZcV>}Zb*a-0;=-|~GY_U5N|RF0D(dS7#aRXI+E2y&bp5#%@pBFJ${M3CcDh#<$Q z5kZcVJlq}^}SVXwQuO9a-0kiA`X!la=F~tQ}%GPOecb$GJ|U$;xp`?J!w6PJM_RNG!+6=13IF zaf-RN7vwm#MzI_xoo{-z*PjXGIE8kYtQ=>Pc9^UjCplE6G+8-Lwm>>eR*q9@hsnxu z(!*qg$;xpu?J!w6&Jyi#LoRziPawz1wZmlPIO#$;hDOQIKGGA&adPc2SvgK}xQsAa zIZmb>CM(C;pdDg4PNh*S$C$TR zQG4Zu9H-K#y(Z<*{mIwgm#qUq>nkSx#>x!H?=6o8Pllk1vyTsQQHf0oXr|Fz1sK0_lG~U z50IDRq({iu_cmigj+1ND?59sTPN7lT3v!%Fqqf%tp=(c$Q)|@rf*dD3Ql`=LYG*u9 zj+1HASdQ}~jhe5dD90JoD3;?~uTk3za-345SdMeMMoq8w1eidM^F{3t%W*bo6w7gv zqhw)XIZm!oEXOG|isd+)G-{t8cZBLaIZmxnEXVnsMzI_xIa+2I%W;-y6w7f6jbb@Y ztx+t;ne|v1E0*KT)u=r#$Z;}_ny14ge-=5;k=@@!j&oG_EPqSMak3NTYIE;MxWqTZJR-b0b@w^RtXsmq z9@DQlGLT@{)s_>=ajw&rksRknBvy{|S|nDE^Jbg0FG7RlI2*NP^8yPw&L$*p**6^3 zb7qIvv>79tZPHdBB*)q6Bw49Qjx!61mE-J$#L97Yw@EwhAUV!H+Ol~Oh8$-u5-Z0! z+9qxFL2{fW+A@;kj3KddoDE2<9A_gEE63S{#L96t+oU}M2gz~LljRYZP>xe-%L(N; zmA0Hvj#F#P3FSEHDKgIqO7w_CaFhI0quJa-2huSUJuDBvy{|7$jDX zlOeHkoD-2)InL=wtQ_YYBvy`dK9V%t{iq!0DM+jwXBm<;&3h=3<2)6KmE(*dv2vWN zkbHihP)+1G&qiY9IL}97ZaVl*e$#If1j#DAAa-8IB zJC2p(WJs(Wr$A!mI295r$4Sny<5)RPhQ!Ko3M5vJQz5Z(oa9_Pj+NtNNUR*EKw{-M z6%s4QNzSw5SUFCH#L96BBvy`7A+d6t|6xu$L<75}g7;R$ZILQ-jV&ym$ z5-Z0ko@D!2IZpOun^-wc@)Vm`IZlPd%5jRNwvUzLWVubO94EQRCRUD9A+d6t;$qv! z%5kzwkTlm&k>e!GY+~g&6%s4QDVEzlR*sXcu!)u9B$wL6%5f?rR*q9#X8Twr$S=oIO$7l zH7my{kXSiRjl{}vvX|OwR*q95v2vW`Wwwu%wac3OP?6)5NUR(uxxx1NL~{)lIZlqm%5f?rR*sXt!d9EPZ>aX$tHZxto-tA& zv2vUmiIwAI8*DWz$0?CmIZkq;?Q`u&n86?KYiE!nv2vUWiIwA|ue8;y9H+2JdkuYH zIZmzZBRNj?DjB0qtQ@CAV&yo=O{Nd!I5{H7aVkWR)1tG^N5J8SpBZ3?!`v+SP za-0$oK+kmFQ{Aje5xXA44(Qy_vIr$z)hPWF0R5OSOn5#%_@KiOW8=s)Pa-0$oftuRpgMg8>l_n~C=Pn!+q=MCM{ z&LDZK)T+W?XG4yYB7z(zLj*ZajtFv`0ukgmB_haiDnyXu)QC>Ca-8IC_P8L&NfGUQ zY*>vWhVI+1c|0;ikmKZtAjc^XL5@=*f*hwp1UXKP2y&d{?e@4J$4L=Ej*}sR94AKv zIZlBHa-0$o8WH3;=|(#icvl$WOIJ0iI#|1gg zTttxLEI|Z0&KM%daW)`I)36#U$JvMoa-2rd_P8L& znTrT=oF#}L#~DKeInD+|kmGDb1Ub$oM3CcbMg%#|tWVnGf*fZqBFJ%;Ac7oc3=!lw z8xTQ`vk}pcvhbj&9A^_E$Z<9!f*fbor|fY}*(VfKInG=}kmD?|QG3~)K#o&rhggo2 zRx*P&f*hwp1UXLrY1<2Ooa8e$f*hwr1UXLjFSghB_6-a1?V*{6HK%)x2y&d_v$hxH zIO*qX1UXKH2y&eK^R^e{ILW`-2y&bf5#%`89kv(bI5i^3af&b4UXbIYU$hbAI2EF1 zXW^b4C;yV|1vyUgWg9_`QzC*KC;N)+1vyTQ2y&d_tF{;9IO*4H1UXKH2y&c!lkEjL zPV#jdUC>;1?-e;ti3oC>>>IWhZ7$mE+WiAjc`bZ+k(Glm5U)kmFP~YA?GJ$Z_%?O08IqQzC*Kr$z)hPFmZ7kmKZt zAjc^YL5@=+f*dFPksS+ioE#D4I3*&;acV@68WH3;>5uJL zGs90p_T)G@BFJ${M3Cduh#<#Fe`3di94AKvIZlZPa-15`9?kuN%5l=W?O2fGLC;h1%3v!$s5#%@}BFJ%SM3Cd8KeJ;&j*}yT9H&GCIZllTa-8(%cC5Xd z`#Y86?%1GyV%Z7UVcNBFJ${M3Cduh#<#Fe`&{p94AKv zIZlZPa-13w{xTczlQ9|adJeEg$Qz-{9fA& za-8JXHi8_dL^tU#G9H&AAIZpmN+Y54>3v%Mh4sS!brQ~cfbdRud2 zrE;7!IX-EAO>duHkmFQ{AjipvY%j=hl3^P`j#DCn948yGy{^f^3{{R(BWfO@(Tj$k z6#f&w@t9H&48IZllTa-3{CTM%-b5)tG$NnA8I0YieacV@6<77M7f{^2sh#<#FcC@`9$H@^vj#D9m94Fn$ z7K9w9Km<8XjRC$4L*gV?mCSBYJ;xu~s=wiRhqEV)P5cr=Hm!7b3`U(ns2{AjioOL5@=*f*hwt z1UXLHOe*}E-d>|1$H@_0)?ATQj#DCn9H&MEIZpa0I~L?PIU>k$N<@(3)EZU$hM&-d z94C3SjMYYvuj*}yT9H&48IZlZPa-0egIZlcQa-0kiScYNO6Ai3@;Etj#D9m949%#js-bRh6r+;0ukgm6(Y!Sk|XU{_hn)7D#ytX zL5@=(S`}{RdUBi!5#%_@QFbiIaWX`Z;}nP>$EgrOj*}d1$ATOuLj*Zafe3P(%0}(B zofF7$ey$y2InM79HTUzQCyspJ!sd)g9xL;1dbPt$Aje6y!(`<+W7=V|a-32-OjeGQ z9wWyvSvgLj9VRQs$&Qr~CM(A&w8LcOIO%aR!er$*xptVW9H-I_la=Gt+M!V$w42;c zAje6Mmt$zRPhU4BoMxAd?DFL1G|MzH<$8KqqZ01IF&|iFUWC{b7UI5tNdY?JfIvW)ed`wcI~Uril_tRIAhvjNoYqo zPN`8-i*lUJ8nwM3$4SqXDYv~K#~IV8>D9g`zF#NjYH@h%?Zsc&qjjx4n+ksOi<7029b@PSp;v9A}9}u^gw+D3;^Y8pU#)^zm{?u^eZKM(y+Cj^n~1 z{a|FT70p8A8pU#)H5$cooI;~mj*9AcpvgfC>5GBdShT8umFWoa} zI7X-677k>1X!L+^jt&n`-|ErfKU1bxEu3~>3#TqRFG)tGOkKHZUFa}%`_tNfH$1B8 zH*HR6GUcWz;m`AeEH;_CRTyn(t1w(N-q7p66zH@Ilc8;zKaAX1Ja78>pUJ`>ljP~` z?;%~849#ph58rr2IDoa`Pcy>lnuLGfwacZ=alK>wxaP}oed{w>Xptl;{n;jLIW+w0 z-NSGDEed#Ks6C94;r1}5bcZn_hjCNWZ0^#wS+@k;p**c2vKqf!5ZWAiZ9}?+8R-@+ z6mAYal$seZBpWgg&_|(OL&;8Hv$I%nRAHOs0kL!lRGW;d1@w7jk7;rM< zr0}0A+L(-q5{68uEd06xO+S;G+^=*rnf1a(<@40p;W-fA?XCz{r|@g~y`e$d@)3cz^`<)MkG6bxXwbgM zovkfH&4W)5HO5v1GGpXAZFx-i>#XA!hGb3ACO0C1^alx~KQ?K{{eq6WOET+6yN2q| z_(5BJqqb~r94P%k@|Jx=AC>;tq^&+s`g7^=-AcvMA0&|eAc6G9ChfQbr9axTxw)Y9 z2MMGTVTSo(tm(jO#{{vd($2MMGCfeI)Uou( zChc3238X*TK9>FC9O(jO#{{vd($2MMG`>gXC%9Dl&TFx^0?k$pR#h{vd($2MMGC9O(jO#{{;aa&K>C9O(jO#{{vd($XSE#%(jO#{{vd($2MMG< zV|E-!e~>`>g9OqaB#{0*&5i@<4-!a!kU;u_1k#^1b{t55kU;u_1kxWQkp8T-<3Rd@ z1kxWQkp3Wn^kAbI z1k#^tYy#;I5=eiZZ~H*{b1jnQK2)VYFR%%uKS&_`d7CcO70_o3-Z35{J5=eip zvwa}_d5KLR{duWPApJoC>Cek-A4q?$w+W;_FSiM#KS&_`xxw~<^yd{ef%IpCO(6Y2 z0_o3G7$TMg15B#{0f zf%NAswi={AOm+#6^j&5695;OKbgS(H=?@Y}e~>`>^Hy68(jO#{{vd($=WVtcq(4X? z{dv3X1L+SENPmz(`tuH3ZM*%#y8Y-oyEW@pAc6D;38X*owACQ}K?3Q|yKEmwe~=s- znvMQ!UHJMgd`FK2(w}$RYLNaQf%FFnq(ASm)h=tUp(_1B0_o3tZ68Q~kU;u_1k#`P z*=jSxC)Yjc4-!a!kU;vg(N=@>2MMG<@3(!fZLXmz{Xqih4-!a!K47as`eT#!8ajdW zN888JpAX6yvGfNCq(2`reVp_M5v4zfDE;}cElBAPB1(S{QTp={TaeNpM3nw~)b`r1 zdGvbHA4HV?Flw%*TMadPS2uex+k%w-AfogK5v4yLw*@KvK}6}#Cu}cDe-KgngNV|f z+iXEfe-KgngNV|f+ik%U_6uvc)6k)NH)~iTqV(sVZ7)iH5K;Pr=Q*1^al~8KcBS)U)MZgd(t07l>Q*1^yhQ7Af-Px zYA?Cp3Wwc(Q9nTX^LeS&{<~pHe-KgngNV`}M3nv@qVxw5r9X%${XsXddkBibDM3nv@qVxw5r9X%${XsXfC@MB1(S{QTl_3(jP>W{ve|C2hnxmNJh^dI{gvN43jU~ zT~%DE&c1=?@}G ze-Kgn^L0BGr9X%${XsAfogK5v4zO*|C~8PNOd!nsaco8abkk z&1LsxL#MV;iHOo4M8nPHsVDvUmK}@IA4HV?AbNar+3iVx5K;Q`Z95jFKZq#(K}6{f zqAxYa)sy~w$Bsqm4W z{ve|C=ezc}DE&c1=?@}Ge-KgngNV`}M3nv@qVxw5r9b~}kBibDM3nv@qVxw5r9X%$ z{XsW{ve|C=ZE&VDE&c1>5q-t%kD(dAMMab`cumc z`bd8eQTp>E+l$hl|F99IKZq#(`LXTwz2?QUC;dT0>CaDWFG_#zwh^U2h$#K}sqIDS z&(CZ`=?|i-n`ihBhQ8Dqi?W~FUX=bIqV(q%wil&8zqAphKZq#(`IYTO>CZhjqVxw5 zr9b!DUX=bIqV(t2wil&8zp)XeKZq#(*=&1J`tw^GUC=xzJ?Rf3N`HQ5dr|s>h|-_` zw7n?(`Mr%O{XsI+l$g4M3nyg+4iFJ=f7-3=?@}Gf9|ur zDE;}1jVS#=MCs38ZLjIgqui7JAfoi=e%p)EpTF6N(jObOm)(h^KYy26eWX8#DE&c1 z=}&S(()^m<7NqnC5v4zfDE&c1>CccIi_#xNl>Q*1^al~8Kf`vcUxmMn&K}+-{Nvj2 z<_;01KZq#(K}6}#h#hNY_({ld=?@}Ge-KgngNV|fDRwMMe-KgngNV`}M3nwawPR8G zgNV`}M3nv@qV#8)9gET*M3nv@qVxw5r9ac{SR0yW_yNNQw%(i^5v4zfDE&c1>CdPg zYws+K)sy}pqVxyR%BI(&hrig)utr4b&kQ>jr9X%${XsW{@AF!>`o;8*+yp2NBV<^(w}W@uYZ~n=6%%g zhVZZ1!*>WXZA9r0B1(TAW_wZkgNV|fS+*CYKik=e(jP>W{>-+$DE-;qMwI>_qV#76 z+l$g4M3nwC{|qqv>P#_|{_JEUN`DYh`txwxi_)K+ZA9r0B1(UDvArn$K}6}#uC^DY zKfBq8(jP>W{_JjhQTnrojVS#=MCs3-wil&8h$#Kp%l3L(8lDb4=}&4SN`DYh`m?v~ zMd{BzHd>s8v7R!#^>NKpuS7)Y&%UY2*BT9b|QTlU$?M3O& zBWy(J4<{GtfctNQ`+B0li5cW{ve|C=TKXa(jP>W{ve|CXMrt9=?@}Ge-5*~DE&c1=?@}Ge-_$;l>Q*1 z^al~8KZo0bl>Q+4WOLcQVR)yL+q;lOwil&8h$#I*MCs3BTk!1W0@{=QAfogK(LXl5 zZW{hrJHzZTw&3jW)E}4rAfoi=2-}O&A4HV?Afoi=NL!H7A4H?!XIRFiKZq#(Im#BK z^as(>siEK-hChEw`*h|(V$wU^zAq(6_9Vfsja5WS+A+*^h(IklNwiHOo4 zM3nwyb}UMN5K;Prh|(WKl>QuJ$9m`fVe;=9PQ$iS;pGGor9X%${Xs5%QwW{ve|C2N9(|h$#I*MClKrPwyYr z@Q1_Kgn!i-KJYlh9v7uQjKao#Q*1^al~8KZu%7-^Zmth$#I*MCs3&_P8kh zK}6{fB1(S{QTl_3(jP>W{ve|C2N9(|XW8ST^al~8KZq#(K}6{fB1(S{QTl`Ep5_AE zll~y0^k<1ZE=qq8QTl_3(jP>W{vi57bAkQq@P>2SnW{ve|C2N9(|h$#I*^rb1`xO&nbL_cn#p7aM1r9bD`VG6lj|e>K}6{fB1(S{QTlV99gET*M3nv@qVxw5r9Y3eV^R8ph|(WKl>Q*1 z^yl$*EJ}Y6y)(2M-ECykjz#GYB1(S{QTl_3(w__MSd{)CYJS*!T>68E(jP>W{yfo+Md=SBN`DYh z`h$qlpC{R|?rSdAJ?Rf3N`DYh`h$qlpC{X~#=>7l7mmE+g671|5K;Prh|(WKl>R)$ zjz#GYB1(S{HD~$gkt3(IHlE5x?Y5m0Nq@9MAL$RGB>Wne{w$SwPg?q;9VRXP(GHWA z{%D6uOMfnsW0|Yf`g5_2Flp(Jc9^vE=MouV($XL8Flp(Jc9^vEM>{kMhjx?O ziKIWv6NBXl|rrbyRqtT?LKiXl^ z(jV>6NBW~tAL-8unewEiKiXl^(w|FZgg(+AjrvG`R@z>a{%F)k`twxNtG&#fu~fdS z8g9R=nwrdB81}gsy>{f15QKNQmrI99OMkS(q@_RFVbao{D`ZNOmi}BR9VRXP(GHWA z{%D6uOMkS(4Y}-7K9TfCJAA6?(CnB#?IQmz<6DQq1NX|2-9r#QxLzd(y;(INc9^vEM?3V9{ya^l++KMp{n4ns zUT?jBc(C3!@`cvylWWxWI=s1*_oP1>wY@0)(Wvc3>CYOOM(-*=k@QD9Oj`P*9UAk9 zlm2MbNBW~t+l$hlwKC;C(jSeQUhRA0!O|aX+DH1M(Z|F3I_b|k8M}}4N29ja1LdNpsOiCbvOn6?+CKN_{YDE-l>>D69fE?tgShA@LihaWW={l>_1LNH_GRPAtf`0MNwo9NDw zo7-rKMt!6|8ugL>Xw*mgbJYpmg`ki0N2B)nLFtc1eWX7c^^yK))JOWGQ6K5g(`ANz zq(2%pS7Imq(WsB~N2B(*DE-l>c{)re{TbSBX#bhpZ#^<|x0%}w&7M9h?87&_Q!+C1 zF|JP^5CD5KZbvmHT7YEh8LOUKTWIY2PDmZMzU zV|QtqJZx%E;B>Pa-Z?lT7WBqw{<>ZGt4U`|8is7r?Z+EGc9$c==0Q7H(6mS%S`T^X zAG^y#>oLjmWBe(i&zA5MnWCq6^Te1sembABJx=FoJYlDA9Zta6)5BA#c}j$*kUk+E zIx+Q{Bq!z%XM`(N@Q8({?9g9kZX13d3V%+Tzt35}cFmlXt1h`>{j%jr`sn^`eDK7cMw>&GKcJU9|4tD^{*rfAyRNhb%heFgBOIb1q)FZf$bNA#)Bnr29Sm zq51#w&N}P#bCcxaRZG^azGUg8%U3Nu_N4hsFS_dL`Glc{GukF+Kf13_~7YT^M_<)#?a`EqgMqL+wimv;rF2p(?&lqeDL<8 z>zlt!TQ}{eqqmHf!w2p3s%x)(<14Sdwru`4GGq9_p)*4e{%>Tf(Kn2iqx0T4`iIef z9)8sJ!;jjrDRz7F+vvBO--V1`JB~(gY5!a{zmKdReM9)~(6m#hjqLP>(Kp#rJ2Vac zd!=^Ra;3I+rTzy8xZ{>9qaw|J9(rP_k`8V{ZA|0~P>&@JBo z%Ci5TKiePdw|Lc7&8K)%{?|XnTk>G}9Pf>*|3BR1y=nNMhu;`JzmxyHsr?-9^zeB` z`$=B-EN|QJS>9VmZ*M=w3!mh5|G(qtOQlKI@Qv-?-Wc9v;#8KD2vf z^IP}%-)Q?W-{^N5GV+Y^5Bs)W5gM0GhqhojdTUg0hyQNDrtB@@P`2m{Z`qPF?A9`# z;eY#(yMkMA4d2wR;TA0T=C)vb+WfZ7W6I}-uU&_e zh2i%H{w6xP@}iZi;%|tXZ*TYfwA}S=HFWLp2Zr0PNnh38adls^zHt1{BUg_;Km4uz zdUe|s7qlOgKIrbE|F=IX{nlq>Jty-~Y4mOQw&C0Ghwh?>CwZU$&|P%<#_GR)!}ic! zboXN>55i0Qga38+!9T+-{<{01fAjUwU37RVKlE&FZ`s-(nET&*A$`z4SDH@>ySwPM z>n>We?wDoE)*RdZSmm+nSA?IcoVWCxMT?gncjiflCYP*SbIG}vtz5CL#TU*yeBlG} z1q0e2Hh?c2zz-k57Y*QxBfelkGtYT*lcnodtzWx**?hE^zx2Yx+5-sbO-Wty#T(Y;F64rRU5)G+DZ0huQf&lfj8ySjReLqd=@85*Iu@I&AN-%ufU@pD$ZNfEL2o*-s1MGh@UbYj}AoI zM+YK2IuPN5#*Gd{+7CGC4sDKMz=_pn15T_q8*pN^*`j2{s*A2%o?LOon)%^>&ChCw zi%N5a(F;rX;q3m`ocU5oHXrlx_I%6(Z!cmI)vM3arK?x0aLd%3 z@!f)OQVs7edC|2}+DDU`-;T~QVNM;64z0rjio}P|)?O4}pu$VfJUI=b3u4H+Q{?cz z{q*!1+%GzGx#)#g0snY+C&|2U8MtEgC6^-(Yp}3A9pY~C_{Kpvo%_C=wwP<#Twz+w zwd`T8We@Y*>|vh%JshpXg7!%iPyBE_+57?xSOIAt)$g7_VLhWdea^CGnsZwoFHOhe zwdr`gI315yr{nSRbUdDCcNKRF)I1&fT=jc6ntpp~yCTie$~}NzoIY2)Uh8-X+Sc(3 zv^ZXX7RSfm;^^?Zc@u}D>~oW-^sxSy`EbM2Jx>=*kT0Ad=gh;XhaT4dkr2*@V!S<< zahyl%C|3ktD#qJ$KH*X7T|w-F8rt`}-|69KmR;*;lHH{|x;A$>D$?NrMR=fLCSB|3 zc)H6nTQ`T<&Cs3Gq0FKIR|vUz=DB1F#X-MIP#ECw=922h4RyNuT$&!{()2KwCgARJ z7!~PoRHVZLiY!c)o^saGr>|MLZu!#XtCsl-VAnTV?G8t4ap<5$?ReC_?_GU3KH<@k z2#*d$c=YHCkFPFzlVwl-@o}Sh_Ic`t)-8?Z*wSc*Esf^a(r9)qjh4KnoLM-_TFMha zDQBjXGgHc$DUIgPy%5AFb?-?g?^cfu?^cf;f4AD+HQ~$(BXlpt(bPN4xrepx_xc}- z^t+erVHWA(Xa%|=(GqkxT7zyTd?1=rXV6WT2J8`L(_OK`Vh&ui@D|^lpbPuoj&zvE z8|Ktu9&ZoxczZZH8@nRWGITgTsCn%f$>Pnyc04N6U542_%%#K8Tsl0UNHiCDM-iW{ zgB~j3i<4(AU$c7cVPVS4$5t+CAD`ZvLh~Wayn#vdagN+ChN&#QXW$FXZ2J&qlY z9>)&zaSSIz-&?0~z93n@YVFEPS1n(bhP7Se*GPItQxhJ|O?Wgp;hbGKv)k2c9@y|Q z+PoPH?|4^SvHGHQm`7;Wz3_*#soy6L&7*th;OMaaQQzxocP-}OhT%Kh=Pj+d<&EB& z_OkvTspwl;dy#6M>wWI@8{EA|8N34Sa@VWGhoZrK&e$I28Qa4=V|$qE)SOgi=3GoMpz_52_O{L{~q4esr7<%6NUQ zLE!V|_5W<4#nCLg*3l$89L=%A(G)uz&9K9qU|9A;^?~ho`VYF}={_*vL)aW_d!rj4 zRg0se>Q1SsNQa{$9Uf35TAHr);pXmsY+ZD1>>6=J!cla0_kBJMX&6$Dr|{cAxh<-aha8EaW)nB8+pcLc`~` zcf6d?IFIXe?FZH2N{rWupTu3AXq{y~z567;bm3K`ce8e^xxH#{pt?)Z1LxtRpOw#C z?moBB=cu&x?JXJmKh&c`#1 z++jYPJ+rdGxLaF$(N)Wr zUVPEo<#?`zM&12ISnKwEK=U@DeIH<-k>jm;C!&4Ri;7{n=Fjc(BpT;jf^p6@80TDs zaULCR`w3`#(sY<-Msq~nH^kB7B%HGxZ_indbIx*{M~{`%k7h4Co~L};9R=N6_Hew- zWz{^(yYJ0Uze2v`b63|eGwB%4i=|^1xo_h`+`Ue^*S4_i{oa4|Fqf-`xmrEU#p+@A z?o&Th=^cu@XAX1i-Okw4HPn;O!s3%bI&d*V2fY)HK2n}P=&QFu-@Og`@~z|1kxTvX z73iwvSFgiUsd+5A4}jfqH1qBMuAsxwgVA9=7^Zr>8g2DH?}OSmVSPU9?ae4Yt-EVe z{4^VIJ(QP_Xs&%-KFF9`n#i-|Rj>A0Ae(PqaGv2H8GsdaV}^zNgUlc;<35{+UkuzP>p* z27jN_t>fVDqx6f72d?kmRfjvD)y)qIbsrHtzyskfAkBrM&l|QLj-E$dYo43E*3nbD z-#fF=y6;cfjPqzvX&;R$*9JbbnmXMzBd*i&L3N_(OP%hb9DXXxzT}6+ZXa#?`JG;_ zCG#KSm5s7Qwg6p0t3tsP(8x=(rsJy+d}X!FFE z4t%19L+!pXb%mNGkdK(kM%CO*atMAsO3A&ri==l3SU&h;W1;%+a`}SmrCg0L%?sDR|*Sfw>#NGoJ ze&iv%FK)Igjc&=>Yf?0{e#YTO=`hzV4AQ;)^JcS$!|QMJLEQHL*p598MMQht~ZlP`W3K!u%lM9XIgRd};=EI9M%P(3Me|Qm^ z4S37n@5hhA5qFr=?O{%=hxr)yaI~6TZ7yeM-F=c94&$UVAD14NwmU7S^XJYxZ0^GO zho%Rf6TZhg`J#0lKlsqak4z7~ve`vB{AbYwKQ6vmPV&wOQS_=Dc3AK zs4eBplyYWDIWwi4nbHS%@6hLEzk5{UXG8C2f0kYuHmb(Oxp~l~+kiJx<8Pw72dMjb zr0BD`Fk^XB8m)!!Xf=dK>mi&g5+>UBEyOry{c+Cv<9ty4=xpe{wOG0AYI)m$HEa&O zy)MKnKj=HE?(6ipefLf`@V;*;!$TqOws{tYW9s|RkMr)K3s1|-m#^txJ6!YozLRgx z#P+71%h+Wtiv1S3~y`DY79*&2XH#@6WE$5H##Q%b-`(VVC?cQhctO}#`dk@#c(UiN^ z3&X|^SD$|RIlZ4EvO|T(sCzPVs2+~a->x->>a~s@wXSvapmjJ}v<{EIFh*D1Fi`hF zcQ}s+{@hY@<1Srz5ouOUp6GIBxPREzUVWkqU)zNfZ%%^#pOAEzOW122FJYgT)@Ef} z%pyH}*!Ufof5+Wx6R&<-kq6Oh%~c9`z$X(Oj%s%}s@>u4kv;L0prm)_pnR>thpt&F z{aCf{=Z4*90^^@`nO70}JxkMos~sx0?@HV&QnLu{0~|jYS{y$Jat8UMY2VaFMY>CH zRAj)n)E$nVQ5}xfy~EMEcQ|@X+n4WXA}t;8&k1_BMFYOm?&SkMUhd@sK3?wS6ODg( z|JU|B8Su0koUB2#=?gy>?lUu%@;gh?0uC>>p@G(OBRp-3! zKjGgJH(z`%=>Efbhehdb{CMy^936c7BJ7^zz1BSV9*&N(|Ho)y{$2Ixgp!|GiVj!n zgyZe*OxGq$!;2VJE6k$%Vj`Zjdf%RVZ5AD^dp+h=gKg#-H>J}~L~z_jD=jA)jjyF$fJ zypG3DypG3DypBf?Z}%|+@%XTOaKqwv&7-SphX=F{&$iX8E=}9t9_afD`I)2UpMi5Zd?^Bk(S5G|4L*f2k<%MAUDr|1@ z$A7w^cl#Hg}k_gVGD7hQ7s`myfQ>b?^SZz=qox_700&V%l!Dg5QJy^HR17BsE9 zf8yAFVD5hgx_#)IHhunKMDOVO>_gGZ`s_o|%O2>5g`!hRp8pTjhfkJpc1oWCH|M=e z1JCyHegkgWd;OyGTgKx&!VL`-(EjW{f@_VIzFfl z7iqi>7h#--Q@-zWqPKdX!P3=NENeEw2si2e^zMH2%{_0Lho<`n{w`>S?eogl!#vnf zrfnP->0XnfCsl`8B-HLO7tBmCIt{w^T(I6;qSoC7I?S=}GKMG7pnp)%EgcV{8K(c+ z>kdZ;(P2L5y&}<*vuhn6Svw?;tXZIT^`qJyj%s&!QL=h$EPN+*QMk2^{ttO$ zCfTfZ_q-1GqRmT-{7{zphm-B)*gyUH{)A5`*1mt^aVh0tDdkZq2JCP&VuuF|8Le*DnrCu&EZXJZL;~&i*{C+=JbH~eYi-PF^coMSG2rDYJiguC z&fw3;x}0kfM(eIX6LpIgrRx^0N{6EZ?QnER9p(ar^Q8Yrn0;PfwJpa}%Haa-`|l6N zIS*!>N7bdyp!!_m@jB6QN}XtJ`yapFhW2mHNruO@Ey5`(jV97v;i9KthofcbFb51r z*XYDiQh&q0b{0Q*6)vK>qJ7@f-f5Ybo;YWgThZIf; z{otFAbO_{P%)=SyT*GnB!x`s1oN*qVjWRBmcf5Tx&+c=!Xqp|4X4&EJ1NwuuTOIUo z#(Fh4IM+= z=jYPJkJ0=miJMO}Qg4bu#4+&KNHUZx8qT78Bp5u->&r)yb$$7i{|6TYd$NwaJv*X*3bjO=Myj!=c<+$bv zFNLSV&k|k<-$D45!fWA23co??@7&d&CH#HD=L!#M)ArXU;hFF!3IDb5Quu+wx0%w- zf0J-MZx0fl?9z?fJP(^+rwN}cT<3p<@Z*Iy&;RDv%Z2B{)0QU5YlRn%zg>9g_(z3T z!ZWG!S>eg9-8_|lLwM%+kAxS(^*sNR@E1A0?bL34u6KN2;jeUjvGAK6KTG%<9A6>) zEsj4&_&XiHN%%&`-zoefj#t8Ocl_JJKjZkXh2P=$)UZ&^_3EpR?=JjK#}5_$UB^!q zUOS!(|Ec3o7k-c9Hwgco{>Pj@^S?bhKO z$9EQfzTJEg~Ch6&lLVv$5#k{x8u(hUI{-?&fA-WC%bp&v+{Qe&m6CW7mj~R z>pOmr*58BmN5TtGvksZ#y9zHHpC`O>{3PMYo~-|5t?&3ct?&5Dw7%nS()xR`{>Qbx zIa`i_5C z>pT7xt-n9(->vl>zhCP+zGHYR(yT+}_@jj<2eAHe!ZXL8D7n|eTHoU=UuMdmK_Y+<@ zeuVJiF>HU1@azckm0JHu@mN=2Ij#R#^6zVX$N!-9Gq&GmJ9)kw zL%y%@#t$zafYqh@PAJFGu)<2p2&syK{ zS+l!!C{AJf1BGX&l4rt`)5y;kUO7Id^-pK}>$LtEll)^^UwAIpv9AhG&+6JM z|B3Lz@%x0=j?da&&W9zebAa&D@uP$%XS4lz!gI$j7hXAjjqvmw)_INa!twVCuO0uK z@a$aH`JV97@&6Q_oX7TCg%2E>>qGAN-oh)#4;P+3j&;ryUO2v7c%2{P;rJ(o*N)#QJiCl_ekHtgd^mj3 z(%wg{Wcyu&=Z?=6UO9e}@bsyy^AzEQtV8Pfp29Q77YNTCKUH|)crLtj{OQ6g$8Qi` zJASM1lkV@Y?Z{geTA9 z{Fe$(9e=v;%<)$U&xP-obiZyDUOIl8@Y?aO3s0Zj%}49}OnC12{aWAg9ro_lp?3UH z!qexl{;|Sy$IlmDI=)JH?f46Yr_VhmX@2SaUoSj&{DZpOmp)_447t$z*czfbEs{&}tM`1iHG9wrCQtLZjXnn_DqxBtsuhxG7>wjMBJN^T$@Ax0J zzT-2)3E5m9(igJ+0m5^~j}l%wexC5!@hi0ci&*~!THo>4YkkK*r1c&Dvethw>;FXS zJN{R#@AwY;%k{zWM+={IT~|MRtkM2DPWW8MFBHDS@uvwNbNo8t8yvqy_(sP+DtwdU zUlYFB@t+Bw^%BniZ^Gv~zT*MiIxKPgVBuqqpCEjL<4+d8(ed@dH#z=t;hP=5Rrsuz za{jjqpX>OY!k0LHkMJ?ar#zxN-VKiLE_|co3xscS{B+@)9bYDV*2_5mXA7U}_)Wr> zIR0+oV~&4T_y)(nCw!yhzZbsA@omEw?#*>zv*QN{pLIRwf3)zqjz3=b6315wA9MW0 z!Z$cx3g77X$Axcl{2RhIJN_%-vtG{mk36zF-nowNCVYwG3xtn3eunT3j;|2D(edXA z-{kns!Z$nqe&Mrj;QYTRe6Hg^7QV#szX~se-z?X$?GNhKA$>(xU-?18E60x!o^N3L z^MxljlCKtCI{sqe*(=%p7U8wy9~EA_itWEDJiUqhZsC>V_Y2Qo&GtJ!s#}NTAIJ|D zUOIk)@a#2g|778{@O?$D6&L z?ROVmJH9}8@lR}jy72T3j|ndwe~Iwyt!)1$;kDzp2`}Ep_TLnqzMcG6 z!Yjw89MT3hgOD7b zcJ0IMT>I-kgqM#0S$OUE%sKM7zmIkH6P`Q%7~!SkON7^suh9A%S^wEu-|<&zeaGLa z^&S7T)_*_ie@E*({u{0D__Vp*I@FHuAw2y6>n{+VJARt*((#M6zT?l(`X6Nd4O-vv zw`qOHKdJQ{zf0?Xi1qK$`i_sx>(-%kd{^PM%T?oJARwicl;Y#-|=5){g1N#(0sW*IKGSU((!r1YsXI!o_>t=FVgysKSS#~exufR z{2f~VG-#WXP;#Idxh7Ik1Xicq4*Tr?;<>{$ma^L91q5?_Wecv zX|{ig@Z>Y(>xGw&UoSlS7q)-1@Y?ZD2roX%_FosCevbU-!YjxBEL*bo_YX*&S^EMB%mLYlIhHVEdN{PrpcB3a=dhsPOztZ2wi^$(PCR7G663SK--L z*nazk-8$5cA0)i^D%&3;JpCH^`NAv5R}0TKvHgpLCtoLjgYeSvj|k7c!S-JjUOWC% z;l(%E{%^w5JIQxCyjzFL@k4~?cd`A6!jo^2KSg-y_*KHQZ?pXk!fVIhD!lj(+kaAc z`fudl5?(p}YvK8K*?!t0IsgB?;}^D{dJeBp)T|0uk6e53H}r>yg@!b``0AUydQ+y6m$?)WxG$o0YTeTAn#XPqO2 z7mlARymtI@;n^=(=UU;VF-#7AK|&;IAUU#aySe}~q0ywduPe@E;8iS;*Y zeaA<$ZXHU;Q{lDai-f0tX8k3?bH^{!`i>V`-|?HZ{(rIlMy>Do9a`V(2^*ZGVo%@dJgIj%UJa;c3$Sdc5%DFX0d2SK9ubv_GcUe*f$E^QC>}_|3v|$KNZw zaJ+fj)zmK?|E}=L@#eDAw67hXer(5+zlH|kSK9ubBzp=^9Y0KX=J@HtbH^_cUO4_t z;icm@3a=c0yYSlaPYF-%=ls7VJaznD;hE!8j+67j@!fpOC_|C#>$L9!7{?7TIC_Hui$-*zkFT8Mk>l5XCaC{%($#6HW z)>$k(b9{;L!tqPBzT?l;`Xj9WYOU}1d$hjepVRt|e_!iQVf{a7eaE*wsauD_@%@EY zjvpmFnacW)6P`JKrPg=+g<9Y7f71HXSpUOX-|??#eaG+C`i|eP^_v%n@Jk=x9Z&Ao zA#?m-;f3QT2(KJ}vhZY-_19~C$6v1X9lurUJO0mFe+KK{rS%=ZSL-`I^%Ob(9p6KE zvK8wu6rMSLmhi&y%e21Z*J%B%S^u?K-|-J>eaFA7^&P)k>um$$8Xa5j=x9v&xLQ(o~23h72&^k{9fV7%x*r~e%sT!<4T1u zkvazp9}~WV@Kc1B!Y>=@f|XilR#*Q*Y5zjuh44!Ft-`bIy7uAgv-a1gwY~7`h5tzF z&+gjqEBt=px$yIZ?{T`Ex59T6zF2rIJQIF_@O1mG{w(3^g=fOG{i}r+uKoLkm%_u- zs{QqK;hTle7Jjerbcb$SZNKdq-TcRdYx_qEFNGf{bxsw2hw!b0Un;zI?XMF)x??x4 zw!c+)DtxXyzMmJK@6@#q({6wLSa>B|+fO;On}4!1+wUzr7q0D(6<+Sb_Di+St{vC) zd7khk!gYOKC%h1z$^35GvTxL>e}o2jD!Pk z-UnsEwf(-rH@NnX6&zAFT?`~YJKSy{fJalh=EfGE@T(56e3NKyz8-#Cm?cb&K_vyyf`d`-i!nOV{ zw7&2KGM_2ubn~x;?Ze{xkh*` ze6G}ao$z%3Zl3x)`moj)uIJC!gy+I%OPyZ`Un5+vpHt53j;j!^*U7zvZ*p}O3r`N< z`E#!DT)18zt`xpOxX$Or!Z!-n`M*(kC42{&|LuW4(0-oP!QFiJllFIo|2Ef+&BAvU z{u|+=hji^{2;VwfcboRxIsORYyE=ZH@O>R$DtxYRJzUh9Rx$y9{ zMf*$l^DKqydHX)8vr)J{zjQy(O8Aqcj_&7~&gosnpT^Jd^ocAKlM0bzJxJ%!FrBNB8qA9M}CkE5~&|&*ac< zTs_ZqKhJ57>wccwIIjD7&URe)^W53-v!-^B`<{;LexCa|uKRf&cd5-ITo)wcaq9M}CkuW(%V^IYS& z?&o>6ca~;?HJYV3r?&tYZ$8|r?4UX%6p8w$Zoau5sbX@oIe3Rq4pXb{h*Zn-- z>$vXc`60)3KhIA%uKRgbj_ZD&pLbmM^Zc^ox}WDa9M}CkzvH;>=lKK2bwAIaIIjD7 z{?c*X&vUcmuNdvt`Hzn4ex84IT=(-FUcl>s?&mq`xbEjU({bI;a|g$DKhIqq*Zn+G z$8|r?102`=JRj}2?&p~a*Xz0N=UF(e`*~K5>wcceVSHWC{X8?rbwAI-aox|ea$NWG zOct`f?&p~~uKRfwj_ZD&mE*dfXL2~}>wcb@-On>Q zg7tMj&&+Y%&$Dn`_w%eA*Zn+`BUxYf^UNIA{X7fDbwAI_aox`|Ig0glKhMl@-Osad zT=(;=9M}CklcQN*_w&pg*Zn*T$8|r?%5mM#GkGlQ>wcb@wcb@wcca32d+Xd1fb)>wcceN#wepXXUu==UJT0_S-#7-WQxguKRf=r;_V_o|WUepJ#Cz z+v|Rw+3DoEpJ#Fgx$fs#IsSf`XK^Om>wccuS>(E(XR?G`_w%eA*Zn+;v)Nwv^UTg6 z*Zn+`bIEl-&&qM#&$Bp>?R7uT>~Z9}pJ(!Ta^26fa$NWGES|vjx}RruKDqAanOs1w z`*~K5>wccag>0|;d1g-}*Zn+`Cz0!Zo|WUepJ(x8w%7eUv!{^jexAuva^26fa$NWG zEONHj{XDaa$Y+HQaGLka$;ITlpJ(NGChdz$*#3Os*)sAmt-qXH_w%eAFSY&(w*Q#c zzqI4IT*q`j&(d+-&ojAw#rC?N zXYRP}=UF+f`+26TSx5KtEF9PUJZr~wKhJE8b#y<^(sA9-GkF@@>wccOwcceI=0vSJafl&KhMf>-On>!&pNuFXW_W+ z=UF?h`*~(pv5xNNSvs!!c_vS1d)?17cU<@LtQ^<*#)-h2y%PXYIJ|=b1f^b#y<^(sA9-Gbz|! z_w&ph*Zn*z$8|r?^cvRD{X7fDbwAJAaox`|dp_&vex9Y{x}RrqE!*pUp1I??pJ(N` z?&q1lfOT{~&%$xt&$D)1_w&qN$U3^8XX&`^=b5~S?R7uT+;QE{vvOSb^GsjNI=Y`{ z;kfSSSv#)#d1lwKj_&7KIwccO;QVzz z&(v|<&ogse_w&ph*Zn*T$8|r?(sA9-vvOSb^Q;}${XCNmoWJhpnL4ifd1j95exAAG zx}Rs^xbEj!IkW(6fvQETcD>en$7EHo7Wxyv3;l^7c!Yl4yvFx`wDN-ZNy;nY=PPfBKUaD7+SO_F!0Y=Wyt6l$ZC@+ZLsk|Z%pJziHKF{nr-yc5Df;fDh6><1H8{+VJX0P-8;qxqr z!{=EMhtIPi4xeZCdfy*D&w@C7o)vNUJR9Qhd1i0${o(U0h{NYu5r@ySAr7Bs_Se2Y ze4Yhy_&h7(@Od`G;q%NY-yc5Df;fDhJC);oBk+0dA`YMDB60XUcN2%tbL@>WAM}UM zbDTJQo>Ro(^PD3NpXW~E@Okbc4xi^DariuU6Nk@p>~H-1;qx3P4xi@~arivvh{NZ( zlQ?{yyNJW*xkwy7&)vk~^BjAVpFez_a}+%s=4k z;qz>W!{=Gv=<1H^N;&__&gis`1t}p&+MP29vnW;f;fDh6><1H8{+VJX1DtO zQ^)GhmBiumtcb(s*${`%Gy8<^51(g2{AN9GMI1iQhB$nl*(ZH}_&f{Z@Of6m;qz>W z!{?d(i|-GgXF(i3&x$yFo(*yMJhM;v{_uGg#NqR-h{NaE5Qon*`?T*5pJzcFKF^9c ze4Y()_&l@E`2O&D7R2H6tcb(s*${`%Gy7NHA3o25IDDQJ@x3NxKR3h=Q=TpQ{u9az z;_!J^#Mhxe@k`PFv%ddT=uaFz&x-iX=uiAB=>Iw2|912z4xeX596ry6IDDSj=Y4

*4cE-|!qh&x$yFp7}R@J$#-G zarivTfA{t9d1j60@Ojq6;qxrMX^UQDa_3(K%#NqQSf9&hw^UQwYIeeZqariuo-M$_^&vd)z@Of6m z;q%Pz@b&O{HpJocEdN{T@&9SU=h+a4&ojT%*Td&o5r@w+{nXdP=UEVk&$A{DpJ(U=k~n;x4RQE9^Pl@Z@Of6m;qy#)`Fi*~3*zv3*2LlS%>KvsfzPuf4xeX396rzd z7rqaCo)vNUJku|IJ$#-8ariuI;_!K9zw&+H^DK$O=h+a4&olqE?*pG_MI1iQ^c!Cf zpJzcFKF^vse4g3ez7Kq!C2{yX8{+VJ=INB~D?aX*BTtm?yDH)*Do=a)`ty|+#NqR- ziN8eav%P(v>y($o-=n-C4xeYfkMHwst*?mxQh6GQ$l3?47e3E|IDDQpariv5`}jWa zd6vZC^K6L2=b7*4`@rW}DaX%`@Od`G;q%PyD}7K8pJzcFKF^9ce4Y()_&l@yeSi2o z3*zv3R>a}+Y>30>ncdI#htIPh4xeX596ry6IDDSj0lq(co&|CEJS*bxc{ar1^UUt= z`@`p15QopRA`YKtLmWQO>;b+%e4Yhy_&h7(@Od`G;q%NM==;OxSrCWMvmy?kXG0u5 z&+I_oA3o25IDDQJaritN;_!K95Ayxt^DKzN=UEYl&$A)Ee=d2LjrsnW@`Cs(& zNqo!6`gMo+iW!{?bEEc3y6;q%Oh!{?b3htIPhe&6=X?&$YNCGkfpuZXWy zUK3xVydl0`d3uPS|7FTE;#VopiQk~SApQ~MCGpXZ;iK!Sh>w0u81b4oe4Y()_&n1? z{ro4}r=va@@w1fY#NqQSh{NYu62C(GRK%}WUK5AUvmyR@txpeYKWQJ>KR-~O5r@w+ zCk~%yK^#8Mk~n;x6><1HYvS;EHpJocOo#gU!{?b1htD%74xeX196ryIIDDQJariuI z;_!Jk#NqQyhxz%#=a~_Q&od_upJzcFKF^Xke4Z6?_&jUn`2WP=^Gt`!Ji+1f%!$M2 zSrUiOvnCFoXByp5?F0Sc^UR6E=UEbm&$A{DpJ#f6?+>46P8>eZk~n;xHF5Yn({K6y z@OkFM;qxqs!{=EOhtD%T()WkYGbaw8XGt7B&zd-Vp6R!JfA~Ce;_!Kv#NqR-i63*O zQXkMjND^UR6E=UEbm&$A|e8~PvN`@`p%6Nk^UBo3cv zO&mVYbfoVOpJz@SKF^Xke4aIN_&n25zCV1PIdS+rOXBc(*2LlSOpo^c;q%Oi!{=EN zhtIPn4xeXwjPDPhXHFbG&rQnV7lO}ofjE4gC2{yXE9FyNI;8}k=WgYA{}_Cp+3(0a z+2>guEgV0O!{?bEE4>K$@yG4Uian7rMjsE5z9qI&o|cT+ul zp4o}ge}&EmKF>n=;mYCjEU6wo&zkDt^K7Vo{yhD8?Ibxb`org$D~E3rKF?<BSlydZe&$CpH{RW?Bqa67FpXb<< zr9b+>=Q*w%^M}tfSB`c2+}eBgdFH1}fBgM3e4ca4;YIvOyMCj;2Y9)1_IX}K96rx$ ziNojlCgSjU?oy6@3!mpAariuU6Nk_9fHUN}_S4rLKF=}Y@OeIz_+ER<^*)05Zz(@Q zIqsL^m5&oYSNW5OKTr9Ta`-v_O!*w~H!0sq{3FVD5&xRQDeJ~Q z&q{fw>v@jW*UGWqwkmIwv(Gad{l!uHz`lK#){iU4{k5n(SI$1qN;$qSg3ohNIrc4l zp6Mxa-eo#}_&mpzWB%}Yo~j&Q@8I(+lxNxpKF^Xke4Z6?_&jUnx%Pq2Gd)%22@aoU zP8>eZQaScHe4Z~O4xi^MiNoi4HF5YnuOSYf=NpK_=lN#h@Oi$CIDDSFh{Nake&XQAarivf5Qoq6JmTBpJz=RKF@Tv?+>46P8>eZk~n;xHF5Yn(>cCBe4aUR_&iJE@Ojq6;qy#W zzCV1PIdS+rOXBc(*2LlSOy~Ok@OkFM;qxqs!{=EOhtD&e=ljFwnG=W4vm_3mXH6VF z&vd@;51(gF96ryIIDDQparivbTHhZ&&zv}Xo+WYkJZs|cd8ViP{_uI`#NqQSiNohv z6Nk?;J;V2h&od_upJz!NKF^vse4go7k>~Jv*2LlSEI0Xj_&oE?p2O#vp6fY$o;7j!Jj>_#diXr^ zEuO>YnYMZkpJz=RKF@O2*Td(TZ}S{J&ot*be4aIN_&m$!`+E31^LfwV^Gw@4htIPn z4xeYa;OpV@%y)PWpJ%$*bND=K;_!KvFYxv7dFGdR4xeYb)N}YeYvN<=U*L@X{-nIj z*Td(T|Dor()~7%6`~u}Q@j3K=p|6L}Gyh}HEA;;p&u>J3<%Q-Le4be;_2BS%mc-%n zY>30>nZL;QfzPud4xeXwv9E{Evmg$iXH6VF&+H|>4}6{_aritN;_!LqFZF%k^Q?%& z=b8T0*Td&o5QopRCJvux_A=iGKF^Xke4Y()_&oDJ^L^m+tcb(snO^Se;qxqr!{=EO zhtD&6h3^BOXGt7B&xSaBp822qKJa-~#NqQyf8p!l^DKzN=UEen&og_a?*pG_NgO`U zhB$nl`Q^S3e4Z6?_&n1Uz8*f$f;fDhHF5Ynvnzcc_&iJE@Od`G;q%OQ`abY^R>a}+ zOjr4O_&f{Z@Ojq6;q%O{_I=>sIDDQJarivbt9(6to&|CE zJZs|cd1kNnec-)gxSrLcNGhOTJ;qxqr!{=EOhtD&+&i8@Ovm_3mXG0u5&-``14}6{# zarivb>wP_Zo&|CEJZs|cd1i0$ecBpJziHKF|Dbe4oP~F5h2O#3z-fH~D(_JPYC%YJE-oGUeHueV?n9 zm&D=oY>3~Y_4)O_&sUXK#P3j^-Xisx<`{gQ8FBbLbK>xM7R2H6EQ!PCSrLcNvnCFo zXG0u5&-Ax`{_uHb#NqSIiNohv5QopRBo3cvMI1iQnmBx(4RQE9(+z(9@Ofs$;q%Oi z!{=ELhtIPl4xeX596ryQIDDQBarivbTmAgu^UR3D=b00S&$A#7pJz!NKF^9ce4aIN z_&gip@Oh@U`T4`=nGuK2Gbaw8XF(i3&yqNNo)vNUJZs|cc{ar1^Gtu|=MSG}MjSrR zoH%@*1#$R1OXBc(R>a}+tcf4n2FvK@(}wsN%G2BZ{NeM=h{NZZ6TedX6w2{_gX@)7 z#BaiUh<{dj_70g3`g{-liNohv5r@ySAr7Bs_DrgS4e^tdXYcm?&sSa$e=hnHe-Zi< zzXtvP-uHhO`V;>+`V;>K`V+qs{omvJ-~UKihl2PK$}8e0C~t_Lt2}$}DQWb;{@kp* zAYLl3h`&a8L;Rh}v-h3i`hQ$`LHwJ_E8;&>-Vi^qopAU6`@G-xhtIPh4xeX596ry6 zIDDSj2Yi3{JPYFRc~->X^K6L2=b7E;`@`p15QopRA`YKtLmWQOu@6dryl(_P&vD}L zc}@|B&vTAAe4aar!{@n+IDDRq#NqSYO&mVYv48OMhtG4IIDDQ{#NqRtBMzVEPU7%+ z?jjDK=OS_VJa-d^&vWc1KY#c<$BDz|IYk^k&pG1odF~_*pXV;(@Ods0htG32arivP zKIG>QpXWGn_&leG!{<3i96ryT#NqSYMI1iQMdI*z?j{bO=h%n+{NeK)Ck~(I6!F>i z7y6@|nIjIL=T74AdF~<(pXVZR_&j$LhtG5DAN~B{^BgA*pXU^D_&n!`!{@n^IDDSF zh{NZ(NE|-T-NfPZ9Q%l$KYX6!#NqRtA`YKtshoYDSuOp+;q$DC!{=Gt?Cat4Ot*Lr zpJzoJKF|E0d_8=g4RQE9%a8hc_&l?Zc@CdvO&mVY;^V#^KF{>ep2O!^5r@w+ztz{n z=h+a4&$Il5uZPbw`=saadDg_?^DO?w*Td(TKIJ)lo)vNUJo8WcdiXpW;_!KvpYiqZ zd1n9WIeeZqariuoMPCn}XZoz?@Of6m;q%Nt=j-9~Y>30>S$^Kv!{?cO!E^XLYvS;E z7GL!B@Oh>$c@CdvMI1iQ{NH>%e4Y()_&m!m`+E31v#)p#pJz=RKF{K-z8*f$^fk}n z^Q?%&=b3-q*Td)85QopR{D!ZG&old`=kR&f#NqQS{$1+v{Wg4_6><1H8{+VJW{vLy zpJzcFKF^By)Uon)tsxGdXZ9`MA3o25IDDQJaritN;y3Ggv;Xk@;qxqr!{=EMhtIPi z4xeZCZQmb0&w@C7o)vNUJR9Qhd1l}7{o(U0h{NYu5r@ySAr7Bs_Mg5#e4Yhy_&h7( z@Od`G;q%PC>-)p!SrCWMvmy?kXG0u5&+L1?KYX4Aaritd;_!Jk#NqSIzVG|*HK{)r z6F*FOMSMbeLmWQO?7w{fb?8t0QuHT&75Wp0&oldh?|(D;6aNbO6Tcn(iNoia{m}P^ z&$A#7pJzoJKF@|Ye4g2lq<_`@be|G@o;7j!Jd4|WJ$#<&$DYIISrLcNGyjRNhtIPi z4xeYa+tAyXP&$A*9pJ#rjuZPdGAr7Bs`BPsHpJ(X^UU}6 z_3(K%#NqQS@8|2`^UMzL96ryQIDDSP{e3-rp6LO?@&9SU=UEVk&$A{DpJ(U= zk~n;x4RQE9^8O`Fi*~3*zv3*2LlS%*K2l_&iJE@Od`G;q%N7@_pd* ztcb(snGW{#@Oc)*;q$DC!{?bD;`_koSrUiOvmp+jXZ~Q{2R_e=IDDSzA-*0y&w@C7 zo;7j!JhO-TKJa;##NqR7h{NZZKg{=m&$A*9pJy70q}m7eKYX4AariuI;zypSe-D3{ z?{lK^lKA<`8{+VJ=7;+}FVXsn_;t$D!+rgGlo!O|^Q?(~TkEq&_&&c>UJ{4Tvmp+j zXZ~Bh4}6{#arivbBYi!5o&|CEJZs|cd1k*YeU9p0&6MEtEQrJBSrLcNvmp+jXO{W? z@Oc)*;q$DB!{^x$htD&6l<1H8{+VJW{>v$;qxqr!{=EMhtIPi z4xeZC7~da0&w@C7o)vNUJR9Qhd1k-k`@`p15QopRA`YKtLmWQO>}cN~KF@;q{<-8~ zMLbj95MQM{d#vw2rMw`%3H^ze=ui9_^naZ1zYG0|--`ak8}uiB7y3Wm_lM83AP%2r zMI1iQMtPRx0iS33UFi=FpJzt=#p?6SiNohv5QopRBo3cvMI1iQnmBx(4RQE9(=mSj z@Ofs$;q%Oi!{=ELhtIPl4xeX596ryQIDDQBarivbGCzO#JTv0(dFI6TZGVg!{T{6# z{&3|b@k!+s@w1fI#0%vO@fRph$NKqSp*$mgz4Dy+=+}$g{E3hLT7JY!;-kNo8S#qv zUhOnSye2;Swra#1;-jY{p2q$BPgkB1htD%7zC-H^;+HEgiC?e0A`YKtP5g^m-w?k| zd75ZHX&<xMmc-%ntckBpJz=RKF{f!Uul*1@jKF{hYz8*f$^i<(kANV|{lw*D1^DLF;Saj(xIR`J(cDwH`jtMmf9<@Of5e%X#7JgU_>3j{Ogx zXL*j)WB%ZuKF@jO$WQn@OXbK(_&gV>4}6~KnSTGk z=UFI6KEUU>Q#s}XpXV;+m_K};wQ{W657zekJZ~T1H?`|G`Z+h>DDyl@*V8lel?4FZTV-^GV!1pTy1cN!&c2FYx`% z^GV!1pTy1cN!&c2m-znX`6O?JfFnP^ZBQ~-aMZ#^Zea9&-7=Wo9C0bc|Kq6>&^4|3eU~+`RAUS z=aaa3KL5hko9FYDo}1_Ma?j24N!&c2SNMAKd|v6fc|Lb~Zk|u#=J~wJ*PG|_YR}E{ z`InxX=aaa3K40bQ&GY$c&&~7sSDu^alel?4U*qe|^LdTu=J|ZB=jQn&KGy!l&gi}< zul4oj`Ml2aT8JikDBO?(dhU+?S9^Z5qPEA;J3<%Q;$c|I$t2RF|rar1l< zH_zuAeIN6D5;xE1-}rj-d=fX$Cvo$9zRCA7&nI#7d=fX$=bL>W^L!FF&*$~N-aMbg z&GSjzJfCmzea!Po+&rJe&GY%UzK?l6iJRy1248QUPvYkJByOJ1xB5Qj`6O{59Cvo$9 z5;xE1yL=z>d=fX$Cvo$9?(%)i^GV!1pYQhd=J_OUo=@WD`TTp|$2_0J&GV`Jbj>mI ze7;BefSc!&xOqO`>+8+)N!&c2#Le^hKHtYYpTy1cN!&c2@ArMo^GV!1pC9n`=J_OU zo=@WD`MlBhG0!J)^L!FF&*ukyAM<^TWR0JfFnP^GV!1pa1ClnCFwYc|M7o=kp`Jk9j_co9DCk_2&5`Zk|u# z=J~wY_c6~War1luchdDbGIY`&_NOByOHh z;q z`6OWhZGWz+nA%2GP^eI1o z^L!FF&nNLKwNIh^D9y3!l~=@XQr-~%tn%#BG9UE$p7MhDuhE~lc|M7o=kqhZzj;21 zo9C0bc|M7o=ks5EfAf42H_s<=^L!Hj7CfJezQ1`siJRw>xOqN_o9FYhzQ1`siJRw> zxOqN_o9FX$zQ1`siJRw>xOqN_o9FZMzW@D?l>J{2KSFs$`~>9<@pF}DU-11mqd)Ny z{fWN@{fWO5{lDn@e;oaZe-r(Qo9C1Gfk(+YWMA_AAEUe={zT;!@wLhu;#-tw|8{B` zJ=&+;)Sr<9^X-35dW3(inw_`iJRy1E7BkD8!^u( zar1llel?4iJRw>xOqOm>E~~r zPvYkJByOHh;^z4zZk|u#=J_OUo=@WD`TTc3fAf42H_s<=^L#3Y&-0MSY5q6TAKW~j z#Le^hEnjb*&;Rh;JfFnP^Z9LGZ=O%$=K1`NuQ$)s;z=aaa3 zK7Z}&&GY#i&&~5m+&rImOZ`#${hoO~iJRw>xOqO)X(HP0rRY!mD)c9Ap3eh( z|C`aD_*c-M`0eOV+&rK6_x;WDN!&c2#Le?b+&rHTkp5M-OP6>)iJRy1fxg~6p9gww zo=@WD`FxPCH_s<=^L&o^dh>i9&^4|P|wZtN!&c25A*fr`8?Ef^L!FF&*x#j-aMbg&GUJ&^3dgy-h@ByOJ1 zBYnMjK8c&>^C(|$p3g^nZk|u#=J|Y#uQ$)^H^VR zo=@WD`6O=M#LNmuP)O{5s|7L|^|N^U2Z&KQEZ)lel?4iJRw>xOqNv z-`_l+#Le?b+&rJe&GUJ(?{A(@;^z4zZk|u#=J{Oh`KfAf42H_s<=^L!FF&*$mBzj;21o9C0b zc|M7o=kpBT-#nkh&GSjzJfFnP^LeK4Z=O%$`{$B}6>;-?5?`hD*;&5-l=6c3CiEw6 zo=@V}p#M{R|6S-${8scQZk|u#ccK4NeSh1BB zByOHh;^z4zZk|u#=J_OUo=@WD`Fxt6zj;21o9C0bc|M7o=aaa3K8c&>lel?4iJRy1 zY(IbVd=fX$Cvo$95;xB$ar1l$%axbJuUB3X|FH6!_~`8!-TShLkA599 z;^|yJ|NFF0M?51w`mue)bK;|Kn@7ALKH9D$UJ{>CUJ-wx@|yUol{duSp*)?}e$qaW zKOa+`5&wqrTsi)K@H>^4#Le?b+&rJ>%X!hqJfFnP^GV!1pTy1cxz_hL&nI#7d=fX$ zCvo$9KHc{>&nNK*!jnndJfFnP^Z5+l-#nkhx1v9B^L!FF&*w9JfAf42|1|m&H_s<= z^L$?5`j4kpA#W zndehE>do^>_2&6h-riQ-!#tnL4_0oT&(Rme_JMlyd@4u1c|MgNt$ob%sr&%t=J}+0 z^L%cU^P=87pUUCkG|%TnQoly~o99zG>do`H+1H!rQ#tC*^Z8s~Z=TQR3CH@F=TkY> z$2_0PbM}00kv`bx=K0(zywvM5&!_TC`61^>&ezJZPnIiRRKBm)o99zGybb30oR#y! z<7b{v<=Fq``P?S;*#GAFRF3sA&*z-fV|~o?sT}p@`J{UDd@9F%YMxK!$P@E?K3~q8 z>pGa{Q#sbnJfBo=o=>Vb&nMNJ=W|}pi~i>MR6eEiG0&%R>ZvUdGeeB)+nbIpdu1}VH_(99F zbZFW{eO@{ua(w+-+49kPzHwXLmA>#?8F7K~i%t~&1P!K3 zl^1%wcy*5L=6_haf!6KE-TWVz^8KWbbZ=iT?Q_h1egC($d@LOn*8lxl|HzxA{>IS; zZyz_c{GhhJ((~>wINjRS>ysrPzBa&j5Ac1TIa<#{(;QvbSj$K2_N80$t~=K4C0(EU zr%m?}-W?qMv3`DG`@)Wm8<(w5)6-8m<-F-NXPv)xdOB^GnV-36^Y(?A`RRqN)9bfv zo1NL-R&3ZdebJU}7p~hfy4mdX^V`->Uo2()h zGTBad%Z`QV?F;MX7f#-=Vg8iaGv>GLnA_eKObi~G?2gRt*t&Z5tl6a_rq7#Lj$^0% zKOLLAhjFV;K+n@QTr{(NYG!`*=mI8|o{f*}>BmR*bfei%w*6M(Of>s@J2o`?cHF>B zTt_#@(Gly%NA`3Z&3^TgS8M60c?3!dOq7%OSE(hVHF=Tq-l?=W2EwrA0Y3))kRGG=n+anmz% zn^&dFX6Co;dA4=kC2Q84X9q`>D<>wGRN6DCw5RJg&#ym!)8>r}-6H?~i)sy{;G}(X3<^8AZZ{5CR zed|Bj-(#}B$@2b*tmwbUmHnqYuK$!1{kyyoD&0! zwY;f`;!O^`Op^mkynJA9 zObl$ii4*$Qc=^CfGK#Cdjj()G|K)bwSM-Kcpj}o3+J#e~T{s0Q;S_NfP7(K?u)B~@ z++B8{5>65K_mFT3)e=q-_n%V2DO7ixGf>(40n3XUaeosDr%)~TPr$MP1D5?Au!K{< zvg-quTPBC9 z!YN=4r@%FwA|F^{4X04A;S{-qQ{Wm-fonJguHh7T7fvgC!zs`%D+2ApDbOyQ0+n!z zxC^I<`%l;fODOJ=B2WpZi2Hj;IE88nr-=JcDd7~VyIcuW!YN?6-y-gBBHkX$syQ~Pb z3#UN4a0*nyDdH}iBJMw77c8N;ONu}xoFeY;A>kCNC7dGeKc$3IsP1wlPzk4i<$jB} zzlnrXsFwRDU5eY zI7L3NxEfBOUc)K!ffbW*3gr?`0c$t~uHh8pufyI(= z3gr?`0ZTXqtl<>-z~X8+g?bIA$Ol$T!YPzXI0dZX6u5>{CTg3fMB%DIE+&=+JI0Y=>6tIL-z!FXY%dHl$gj2v0P65lE z6R?I;MrPLU6+n1oX(mv9PL!zpkLr^pAESi>pQ zYdA$N;S{)rQ{Wm-fonJg-i6Z%z2OvSmlc6_;S^{WPJv1|Mcjo`#Qi7if+ZApNfD@o zQ^fr}B%DIEgj2-*r<8CC)m^RxD&Z8c+;0*0H<54()pGv?Ea4Qegj2v0P610e1uVB( zz!FXYOE?8AcTT_>PLU5RmV{F%mv9PL!YN=4r^p8uSHmgPYdA$duwoKUpxr9^T8cu<0I0dfZ6nGa-6XU(<6mgdp5qJ3%aTib#OG5SVE~0w) zz*)P1iRE2nL@Y7Y!w1?(P{n#lsvbUYUdgIh-{nlil2(z+9oWMM`bc2Kdbz10m&l4- zGAnWkt;i*{BA1&ma>=d8CAcD&+bVL6uAT!!D<|O<2S|EFF7Xw)=2y>wp|#coiz76` zdJYUNpM+Q(ASo8P##lU{Io5MvXvH)jPN@+=-0S~<%?E$x!UzX7zR-JKt3mvMo1cXyy&@CDl4l7V(<7^uWj#69mJZD%a$ z5UcyIZ=(MK``&Rn>fL{dl7r!ta#uy%eLab|erj^ zg=)D~Bkq4GB`ia=WLdxxp%M45i3DG$mh_3Ze}Z!RhiVPU$cOgTz^klxci(;dZ5yiPTepb& zms-LpR`;J$!YNcsI7Qt5iph2j)pA!w+&>f9lc8F|DPRewi2K(>!YNcsI7Qq)K?$c& zt>F~8gj3`Lud;?ytRGlL4X0Qy;S{-qQ{Wm-kxMv5KJaR5IK_Gir@%FwA|KcY8cw0U zyL49YeKj*NFRvC7dE3SOWbKGS*8t1+L)~`Oy9vc(pa0 zVjl^oz%`sAAJ_;QPNBZrss24y2&X{14H;+`PJwo>cA#B21=?+xK)Y}XRKh9ZE}SCn zzdQ-2Slxet5>BzY{}LsfLbYt$i2ElfnKJY4QIK_Gir^pAE zK*K54OE?9t;S~AM{u+3-HJoA}38%m{oFX6C2pUeIzT2tvdq1R8#NC#RxXY)AyH`Bo zE}fr+yDmm3tKX9p%R6X?r7b{s6>t!4F@PT>CcIv4gIIjd& zte3><;REN@UljUxw6q&UwsGtuw_6V%czI>J#`@kjGPLKF+cwtgZ@R)fCA(t1gjWwA zm}l=h0NVLze#J)ky$483M5TId-uv>NyoVm!ITSZt*^)^lKR=M8NEjk2Cr zl4bFLhFQ;nq3xk@){a;rj~NM}R`1vdbB<^hhK^6_FU5wAuj+zl`MvaCky;Pcw(YAs z85Ny-#l4JOc@JY(-pknI?qTe4_cHeQdl-BC;8=kA}lPV9txS?%`CH1}}s z;n8x>42-sey)*B0QF6zIQ!hDo&trS;MjJbDH+B{(`3+m|dG)tbL+6#3qyM}(HZ&H0 zUEF(K{mb&fvE96S62z`&AVF+BdJ<&Gv3ox6z}Rk11L@QDmi6c#i(`Z5)gOU}*J>aI zY(07sWXZ9i^UA#X$Ku$~So>CSc+x{DU^DAWfu#qB&Mk8r7;Oi)Y?+^I|I@FVBV{7K zb|!yl_2`S-z_C5UMnX8(amlc7Y|pTfp>AkcIHto!YtZ@)dx!NMTQY2DlHIaW%RR%w z{BdpVu=d#8=zD;XKXU2!Af4uE=*Wt}F)Ig;95;C6_`xHq29KODc%XbVquxwL8*#t=*B{YweEoUQu^M_WK?!=mfN&?H$lW6fjjfJ#`wShDe%&mlN7u@SMeMOIwv;0&Yb$4+nP1mB zVW&@i#s!nUq)QVjSaSWNUB?G%0C4Gv+h*O9 z>Gs(C%$9Yd0s7h8mW8yeTfJoqGncfVk0iV8v2EQhSvIptwYr-&v}5s1Mu=ZmM&R@3 zu5ZiQ?(4R0Uf-U2TidYxV_A0=>DaykX<4iL-P$UA+tQf}cU;sCUN_s?ZSi#T?8a^Q zeBFf?&d*$oXInPU&fxQQz05%T|Mkhk+tDNCGJM;s_Ria9DXmff?|TQ^KUB|*r)lJ2 zzi;~=#;@HwZ=a>KRzcQ1+w%wf)F2b>CrigK?45Uq7Igek-LpM^@c2{PLqEIw?rk{# zHGAh>@ihuC|NC?_C3vLuX*#?8RYh5$DIhbCBK3_;yJ5_(uEZ=%vPZ{QCw+>-a^ze(X=o8~fn9 z?bxN~zw64GuJ2t}{@)T?F00o4Rg${=oV1@lG0#e`jEmj_22#Ue5H3cKoOp zuD?_t{uUj7^qy09pJnuX^bb*tdX5vvc>MbpIE?e-<0xP8Ici29U#sWey%e^ebM3kQR`~PYjH|V!4c8d~Dao{^0RX)bYH2&v~|t zf64_mwEG0(mwvSDSW +#include +#define NB_Z 51 +void nrLDPC_bnProcPc_BG1_generator_AVX2(uint16_t,int); +void nrLDPC_bnProcPc_BG2_generator_AVX2(uint16_t,int); +void nrLDPC_bnProc_BG1_generator_AVX2(uint16_t,int); +void nrLDPC_bnProc_BG2_generator_AVX2(uint16_t,int); + + +int main() +{ + uint16_t Z[NB_Z]={2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,20,22,24,26,28,30,32,36,40,44,48,52,56,60,64,72,80,88,96,104,112,120,128,144,160,176,192,208,224,240,256,288,320,352,384}; + + for(int i=0; ipIDrWS2<{dfg1bYo-~<>LoZ#;6HaLUB zoqYSAbN0UX{HXP=)o*oGSJhfwPZv%2GbBdHAqWZeFyqN#zHhqc{9vn+tZH8~&ON~L zd7we6+~?z?pK9~^RZZHZn~?>sbLA|l%{C=R>mc)iOstEomB-ew9s z4*Ctg1td@ZIa!qjCRDi8u=t!$z^$(vS{fNAQ7h_{-wi7VN$nYEvIwbX)$2dLb6WHp zn)P#P5Ll_dV}N*bm#=**q&Q62*x$a`+;--WIa6bwksptYwFVq+EIcxpae(f4-#J^% zkv=_MR6Nbyeo_v}3Vvv4JAEYW7 zIkn4|Hk!*X{PUr>YL&OSC9d8m>xtldAx}c$xRz2vlw%=SbIoAw<63G*8ny#VOZiFE zD-FqKl03v?S`yM@8j^Xrp9@M@hYH6JnK^Q5=jHS@=M}d!n5i`PRJ=5_3iLjCX`mLx zrB^%kOUX;ES!xu>B@DQiFpk9~sKb6}=V8|=oo7Z|_gdM|$cYa+)eQ`4S05OjZw=(p ze61XNCY4z=FRCWoIly+VXTln(q;OP+eCgGj_&<@Rj_M6TpU$=9W1eOvc|)F7x;0BBSCE{1 z+GO4`y_BoLdeQOcGCm&TVF#$WM5g52c{Cx^A@I9|X>-5XwV|i*?onYe#-x!Wz&fR( zCF2Ix^`_v?Qe-wY zry=*sZo<1S^5R=jcn8P5W*Y;>gYJhxk3L$4dsNPItLKw0_|Z*Qn~geo?dd|j?-)Za z|7b7O&W$ugC;$!`9`z_w%sNYG+{(Xs0dxbxzD%iAHvd>3TsVD^aI4oI6z$N3+qs1U zS@Br=769fhV@r}VwmiO-(Rw<#3pbiQl@X;;biie^+Nx}FRi76gpSuybyIu(oj~P0~ zNPJfiTZ8*EGImOODdtZ^q`%UEoQTD=8~TfyASTn8c#!efVHo~E7X{_^3N-hLBGytKRN8W8yp17Rn$qE zn@y+_7e+BA6zLDJwg?_UvU+B@P?{U*Q$utasLiGlJFLsFf9mkbeZ#kn*9?<#9;P;# zL@Y*N|BR7xV|+07b2<_Bv-VO=25gW^cb-miS>c8lN^La455spGxoBQ8iokp4Hfv03 z_Cg^KyD@K#y_JCSqnvlE4P#d9>O3YCFM%nny7X!NSxZ)9m13&!tg${WgKec0F0$oc zBZUKx+)ETTj?mUVDf5F06J^Rd3dLUyt`&skc2+kDEmtsI-l^En2P-=+UfxKjl&1ni6l8>9q%8o%cC!#F_p3+7*i>G=V%aWR7pdMk1hKHbNSaku7GV|-S z=pQ+Z>O?rHdhUDn`-O?-%nahB53Uj_P}h2=B>Cub;b^vE1^5U!{YE%u!v72W$P9cp zlnjF2QcV=qnic6*leH*!-ruR?;NqBFZY~StxPAPcUm33ZNBce%QV6ja8tC#4Bwe{9 zydg3()v0K>xW8qZa0oVFNIYFKN7aK&epMv7tlZ-9xvAC!9aXof0Q-1x9ICBtWuA#|k7CkHa`lxGqAJ$#Lsrwzh#M5<48L-2<14{K8A zaV-lsS$XE%tPv=7PR!Qq)BHuh=hfK3kd;LpRHnYVeKpMZ;6M0>wMD|h7{piBWp?l2f6l~d?*DLArlxSmT|WntTVwj|AQ z$#iCN6|!QmF@1Qkhv`5QoOCvob-|tl4Cl~1+hk25F)vkXO-QPXWBR(S`DSHV8Y}Ny z=<_PaLs-ZTgR-sS?WwGhr7s&kWsWjx>d*G|YxXC)_K2p0FTVCAR>f1#WXtuq9p+0v zfOZaTGSB5|^`2ghxKjyVO`&;rcki`LZh1Xr&6GL=Tl5^4Y&Fa4AbPIjGL#{DIKcte z&fDZe$FM@mA1+Rh%#+7YNBLgAa9;1C(+IanZFnp;~+$x6PM5j__RPNLUJ>ANUMkfKINv^y%%~?e3^ybeiSPl8kh6ysB^HArvQn`vgqODiu$2}L#`zVCIu$}Luk$m+2;s#V8|WDvwW$5nr?Ink8y zdoPpBtXXm-zMC&J4nJVvB zfj%c5{!DT8J|%v~DaMt_*;j|0B-*d~O@;ER3YC?ujmuI{dQulm6xi4zth;@=a5=SP z$WS9ixFX+)nf(r0|4tB$8m5`qwe5Ut*~d}Qg}qgk!3nZmQ&ax}Vng4lt9Js`l%>zG zW9+af1=1&nyqSl~+50O3Bh^PK+R>zGjA}q>-^lHE!d{ZES&hsn1iU> z1)VKYuM_*GmmqEFg9m*z%W~c&%h+95?C7twqJ@R#`fB3+g@qRWoY$6Zy6HVX6GnIQ z7iN>mq>5qcd%1~q#!lsyh$S+o)OXHK;g(rIJ5mGNoMT~gbNMdzk4}yMrW?i?8e)@J zX2I(bMSLj`I?4!DER%LkPEnQ*j>j;cT!BeKLnNm?X9q!Oe-;$-Nx+OqQjoY<`=nB%B>Fv7j63@}K_geWtf8yi^8 zgAEMj#SY=e)~Spu!*nM4MXiHhmK1j>hwLGg3yC;m7H0Ay0_ph?fe3<#@WO~jK@8UT z@aIqiK zC2N>_3@Y+I@};l)U4XlgsYtAH$jDJ5D1tz$UUq3*d1P0DRVdd0zXhO|T^k#T^na>C52cf1 zgVJHYg3{4Kk-5u+0Uv!)5miA0XdRv;{(ewa3{D~92Zg26^GjGW@Joo%^P|!8!$WaT zxlZO|7|v+v`KgC|@ozX^yr8tc3yJm*@9|)OLSD&%L;rKj2akk&5gG8RybrBN%rbQ> zBK#fmAFBicvf$8hgtos7_?ZmY_mcIGd(0}*f!`(6-J{E0$R84cP5Fum9T68o2+;A6 z(ea=l1`~X2N<&#tcS+vtoIutRfvE!;w7hP(AFJ%92$5#5eO1Nhw7nB^OGU4Mm#=>L;?+Y+BV8w0 zA7g^s(5)H%*=Apr=EQne(LQxESOi?;@-+1HND%UtJF?;KO|u5QB|OR|E-hF+9Q@^* z_{4fLH${}Kk@d`u=zfc)_P#+L&BxLe4+omxNe2+MxfP$9W!pdbPSKh^%4x;G0Iq{7 z(x$E$>h_NRVsR%!nw{Y6xEu6V}}Y)Z`h$$80JBE0ln zYfWB?%&hmB-8z1QtVe`m8ctEQtbDbs@GRpgSz0}jl3BdYEd4{UAyM}cT8E*}b7SF?7w)oDy+=_5`2Ha7 z7hHui)!w}qCFXtq#m4chU}{yt3!xZhB}iz5dSOUUkGbm8{O7O2N<-kJwJqGwZiGu# z>3ojBkoruX2uO(lx0OiX1KN;?VwY$0y5#=JH~w4+=ppex^jSrse3wx#*Yhfy1WrC) ztzxzG|1oD|(tk7Oa!+lo!c|ngV9yB~1@2%~yyP7YfliUtxUUE zL)ZF1#LBk6t+RhzTi$TNM4dTWM6J)NDEfZyV37p8%>9wTg+;YXSIXeXwu)p20yt$I=SKX@BnjDQv5c^n&ApNw-K{l1Pme; zz<2jp6-JLgFf~Ua7fcv^L-O*O7tIq(S3i$ z{?ffVBgRsSp(8!;nS80Z4gug}F@e8usZ1sT-M_$P>)*j;q&U29V)xYnjODbq{FXKGwR#`yi!E;&g_)-6cxd#(mb$%`11 ztv>{*47B1gbbY_nJ|%nTaPDo)v!^l$GmX6f=}o-=5zM{7TZ$8TCGLsV!uu(V=h<4E z^vhN8_o0Dc+4;vcGviSZ@_P)W?3(Af2+q(%aE2~|GYpCFO#a0g9n9AqG&1=44bu6& zE*)-wAXNlHFe4Cx8G#VYlmVNmZ!3vB)ow+%y~dAuJTm-Jf@oexdr!8eQ$1 z7?B!3z1ly$)+*l@{@BJ&aI|J@>q z7}o??;!noq;!pgo;=!Tu|7wv;$p6tIu>yDK(L3Zz(K~QnVRYnRp#0M!@zDOQMM_A) zaATzq;4-?rT0p$Aimtk{8nc1~(~O0q{e>5V$7SlVWhX3f=pq^dEzl8YfyR%9#t(nC z+wzsNhVmUd`l6UGYA^dnvN>gq0Sl7B|5PO&DTKKkA)!bizDSsTzs^2AL&if?h2WD; zRj2+oT=X5lLT&XMgJaw(K|#VQ0eb8zLCosxYu>J2sI7QnUqH<2Hy+gYo1HQ;;CvX( zd+ayl#|cPR-a~AawhJRR<@e3q{ju#t`f=CKNLQz6| zQ7~01xoOi5PdPH%j)9i;RcwuY^5HIX@We; zvZ);;P@#l#fEc_o52Y(GN0J!O|Mqqq&wjc`FQDiwv7hx?A`@WZy9_k&x;mPk{koDB zM#25O!JLz0BB8-{rLeHIb$*MU@88C-u_lNy>|DVsw`y07cu$^my}+POid3TBA9G-X zJGtifPpUh5h9x*Rc}`kwSIgXvBhwxQ)oo7}keN7 z-*KQV@_pBZ|MK#eKg+b2jnlXZ2Dah-J%vTA3RH@$$_%boL|G;>umYNW~jF6Q~O=BsAPit4Olwn#eY84+3Ze1j6?Nv6{o zw*NGyX*#D}h4mSN_Q5C61td^dV9ovC$B9V^oM^5r_12@sHq~Ck<-FyrIv*C*b(R)KVD_mYS zfU`aJh)15mo9yndS(DPH4R!&-jy$~j{@He7`D)V%YNmqmW-`2?+S}A|k#9zEac^B| z$X^+LOCBZo{2b}$axWyMfL~bj1LOT$o0;4Ne6^)#LHO&Yy}G^hJa{Rudc((3q@zh= zH_VF->V7hq*00_3wq|jTKhj9aslxEP z8B9yLF2E?*=uMo_u*=s}gw8-(ekw{xN1}U~TLcD`blTMz6 zO;6?Ll1oXGs*TX3jp=KqQMG>8m8yXAbove6cL8vNa^9hDQ82(^7E`>y@1_bS3#DIslhjw3_qRM4j?Bk!V`-2T5i4Dq~MKQcaI>@C=?YV~WJa@z#q*82_TnYUS{K&;s5) zLkc~t%q8qudKb7C5stsJ6z6l-51fDKn;sX@j1qIAI#n=v4k9eb_I)i7UavkfLC@oa zohhvkKUik$J(s82Rp6FwN)(i21+s)wtzaaGnMam9FQO_&oIBY1P$7ZG#ego7N}5_o zMc0fq?bnK5KO)w0(L`)Lt%YO3T!ofqAQ9yV-f@2nMY-+B{_j@lP4uyhrQ^V!HLmbQ zPXN`%8YPfQIi1OY$D#GCrEb%VNb<)(!AXK2@;2DqzUXy-mm#NC`p^!} zdfTI>y-=cqkXWaS-qL;1VT4}fGA!Y(gU6F#x_Y~wM*HO=sBy0G)X-y}WOI$-2yG~n zh6nG_yLYBSvQy{xSYG%LLCB@^YfpZi))`prrL4gVirnf682a%L{!}yjLchI53d>{f z(4kjg0$4+11vq|ntl`sxE=~iE6(P)v8?Z>*ueAx8EUi3NJKz~3#)9_V zH0sn*Tu#|fBD=9QyHx=is+N6bTlobTyKxDhZqh;LGTJ}J4%NAT^1KEzFXJ^kalT4va{DwkB2LE8j^MHR8AZTercY)UBYkZzfaK`B4w-F zHzA#fTpy#c1(jOxet%NPBMH?c@0KPfezzB8iYLJbxhATYtqAmejatM-_C53%+kI-q zHHVX(%Wd^*;rAuTm$jWnjEqPh_q$#AwwEW4s8SEj3WiV`SsosK9Tl}3ClRTkW&~A} zy6|_*AE#iSuL>>F;xQ#QXdy59Zdc`Kp9R-R=ASzCtc&Zn++=fPQo=drT6Y3{GQ{#m z${FrdCb!EH)Md@!s5LaV!`@KO2hq&?>zv=wCDmhdF$|A*!Q=GKD9u>>&+&?e*Q&xS zvPp^)m>E^>b^-G8Sd{efSn`;pD680wg;?6j1<2Ydri=#Gdyg?;;v<{3DA8Z7u`55Y zjsBdtM^+eLtx$-qmu`wSCcaN3o~}zE1==oj95*2kk_P~$t$lS1N2dhJP1Chb6qEeS zjdjh~J9%;02Z-hi=?vq{$b+r_SpxoDDw!{s%4wnRpb;Y~4Z`zPHvW+{g6ED#3Yp z7gMRNzb5?<*5}p9_wTp5(e9U!ecFv8Zw5@VP<_m?gB&iX|9t43L-W~ro!lvjiDnyV z%+8GAZ;mZu_|;%ZvNzTiZ*wZ8g>%fWg zTo|qtmQt1Yt$}T%TVMe2ip*6r1z04qF`BigS){yTOVnWy?>2H%`(hB%@LILdL#S;z z7pBZ(GbKO3Z39%ok6O`ia$vdA68^$6W4-LT)w4(Q;JC57q*{Ipt}_w@y`H}<1eK2W z&yzNM)*pfvMz+-1r&B!wNWOn=b}LQ2n!y!61Zxuo-4Pr!!e7`EraEsl?6BF^%?oaM z>bWVgJ$*k5=?t%aOa11MPwV{gP5E|tSieBH7F_Z{&)^|Y>u7j58bp&mNdX)IQ7w_) zv-R3GA?GbJY&D5A+rSP3E&T3p25M%W4&$a=QmLI$xJDZtQ947HkH2rAQT3y9jPb5; zt|PAT5Pi(ZyKN9Gju{_VvdDK(D7mzK8R^8*)cYsA<9>^8pT`jBpxQ<=d?)hd+hFc; v@|&G60+C-AWiC(GO<>op-f=1)X$hX8q4<6HpHG)^uTL^qbqZ-073u!~h@QNW literal 0 HcmV?d00001 diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx2/Makefile b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc/Makefile similarity index 100% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx2/Makefile rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc/Makefile diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx2/cnProc_gen_BG1_avx2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc/cnProc_gen_BG1_avx2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx2/cnProc_gen_BG1_avx2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc/cnProc_gen_BG1_avx2.c index c9b371038f..77ddbb6543 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx2/cnProc_gen_BG1_avx2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc/cnProc_gen_BG1_avx2.c @@ -3,7 +3,7 @@ #include "../../nrLDPCdecoder_defs.h" #include "../../nrLDPC_types.h" #include "../../nrLDPC_bnProc.h" -//#include "cnProc_gen_avx2.h" + void nrLDPC_cnProc_BG1_generator_AVX2(uint16_t Z,int R) { @@ -15,14 +15,14 @@ void nrLDPC_cnProc_BG1_generator_AVX2(uint16_t Z,int R) // system("mkdir -p ldpc_gen_files/avx2"); char fname[50]; - sprintf(fname,"../ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z%d_%s_AVX2.c",Z,ratestr[R]); + sprintf(fname,"../ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z%d_R%s_AVX2.c",Z,ratestr[R]); FILE *fd=fopen(fname,"w"); if (fd == NULL) {printf("Cannot create \n");abort();} fprintf(fd,"#include \n"); fprintf(fd,"#include \n"); - fprintf(fd,"void nrLDPC_cnProc_BG1_Z%d_%s_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) {\n",Z,ratestr[R]); + fprintf(fd,"void nrLDPC_cnProc_BG1_Z%d_R%s_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) {\n",Z,ratestr[R]); const uint8_t* lut_numCnInCnGroups; const uint32_t* lut_startAddrCnGroups = lut_startAddrCnGroups_BG1; diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx2/cnProc_gen_BG2_avx2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc/cnProc_gen_BG2_avx2.c similarity index 98% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx2/cnProc_gen_BG2_avx2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc/cnProc_gen_BG2_avx2.c index 24e97ab5b2..76db309f2f 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx2/cnProc_gen_BG2_avx2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc/cnProc_gen_BG2_avx2.c @@ -15,13 +15,13 @@ void nrLDPC_cnProc_BG2_generator_AVX2(uint16_t Z,int R) // system("mkdir -p ldpc_gen_files/avx2"); char fname[50]; - sprintf(fname,"../ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z%d_%s_AVX2.c",Z,ratestr[R]); + sprintf(fname,"../ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z%d_R%s_AVX2.c",Z,ratestr[R]); FILE *fd=fopen(fname,"w"); if (fd == NULL) {printf("Cannot create \n");abort();} fprintf(fd,"#include \n"); fprintf(fd,"#include \n"); - fprintf(fd,"void nrLDPC_cnProc_BG2_Z%d_%s_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) {\n",Z,ratestr[R]); + fprintf(fd,"void nrLDPC_cnProc_BG2_Z%d_R%s_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) {\n",Z,ratestr[R]); const uint8_t* lut_numCnInCnGroups; const uint32_t* lut_startAddrCnGroups = lut_startAddrCnGroups_BG2; diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc/cnProc_gen_avx2 b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc/cnProc_gen_avx2 new file mode 100755 index 0000000000000000000000000000000000000000..5e123291d134e638721f46037c0203266555eafc GIT binary patch literal 43488 zcmeHw3w%`7wf8QQ=5&=ma5a7e}sM}P~Oj+ShpsrHa4wHMn0swip7WwNR% zJZA>s$XDMIu7VbGLDQ?19~%_aII0pZQ{gfdPSY;sn5O#p=-B9Qk+QeQ5kQUV0U{!w z_c2Pkv@Q53Qby%l7jYFdzy(c{;VuS_{QRbyPbn@`?Ir7%UUht$s;Zb=UA1)j)XCLl zld7v~o0=yz&zL@G`qZq(x~yD2Zn96h^DexUThjgLM~#ke82%^*NIrGYl(8x9P5bUB zYdiRpC0qZ#b?-fk2&?~4{KnhK&>WILdt?&+*d+WZN%&_c;pZmd7lH4`pM4t&Mj}54 zB;lWtgfDO&N~znYi^lqfs@h1oD6gvz*NXb4NTVoOTGtQ}<)zhijbTx~yrC)rqSQhm zf`%F+B@K~KO-WU)2!$$Y>S`4yB<2+r=FJJ^X60s0BkvuS|8$Mc5&eg8MJm{uPO3^H z=~c2Sj)aQ2M6u~sJR&2Ci@8QT!t2d%;hRGd!b}UF;zn=T7Cyz5-ey?%*7+h};akT` z(89O+xxm8LW1HGoY~ka8&8^tN_nKTGf-RqTg6mRSuk?#xYeyutrv<`b%k!Sy79|vq zPHTY5(Qy&%GsXl^qIxAM9q2xaZQQj~r!G6t#r36Br>;8C!SySt?xgw_t}moIbRL>WTwVuAfbH>VgCHT+gLC9r}S{u1}yk9rA$%sOS7gVcYMQ1l!&Z zwtU#TU{T?oj_9m_2=3YCW3p%UIRVkL9Eyj^Gsff#v3)r@=+fY%dXQktk@R5ON6Q`8 z?A{K0+%bo)d6q;+yEDc_iMO39c;!^3Xrp zb|4=dWK>rWx)->bww|9WNf>OE#FoU-MN@dw(XJXRnQC) z_Xm>8_+VQ>Pq1ZWk7&wx_D=A7{_sy2-HBar9VBhLcF>Hw)4=Z82T4AKtSHfmrf55f zMkI3u>N~rjVY>1wvcIRGJNsPoP@BA99O(k%;Dz#_4as_wSm&sIkgR>g$~1dqOup`s z>89U%dQPGP`TVPxx1&sN&jg_7TF5(FDOQ7>t=|J_?`&-V5uL4c&QOcUS`$c6AM#Yw z$YL@w&TMekj+m&OL|%(%x{2CLqQ6P6j$~{Vt2;7QKZa2V`&7-?+Lf`5BO~M2&$V=n z*>xnftzh4F7w{0Zbr~H-*RF0iv)|rRa0q;HpaS@Hm+m7McZvc_H_wypbgvV;dQ#h- zTUT%>W9#YyI^>M49maDE$g~26Te^!TZ+YH}q0)1XMU-WVHjv1luo>#oB+dN#AF;E7 zv8|ffOSWFOh+-Y;n+wrX2}MB?-7iJf1O0Wu+v*6T&@dx!YF|xDmvr5>!06j6!qTv< zSH@XHwqEfjY)SV@;+F3IGHJ*B)*`ZX%*KQw?wD37vUiNxdR*U(u-HjAPs^*+!LuN0 zDL7=btUTn%SaXLZv}2>{9a0v} zcr|_SCLE!~iOzNNd*l7so3U+m0i6Q&!PPgSvn&nen`fE_;3XE3EzV{@)B+z`R`wzY z=;BP4=^7DJ>NTZu%l-$QE{;5UH?pW~`~OTzX<*cN$Jn&wWrtNcrJY zHO1Ca1 z*bR-b6r1mpDiuCNfun3c3hl({LE#B1e2fA|>nA9%@?TM4938 z;s^??{3Qyk{1pnU{51-!EO7Q&*?|H#k%9s%yHH?d4+^a8MS+zEqQJ`OC~y-#6j*r( z3amT~1y&x80xOR|ft61}psbA|=@rex1b++sJ6Q zh-@RH2_iKz5Ub1Rv?QLwi=+)29jdqbo5KI{_n0Bu6z=2}d32;^tXYa9(k;fO@M;8QB)hY9GpTpBJ_u6W+4@tE=FZlifnat15Xi%wt^W#wCHuo50Q?*T zfJZ<8_yq_6kAeX3OAr8l1p>gYLD0|^5C9$n0pM{E0Dc1kz!M+BOs0DcPsz|$ZAJOcv2P7nZ|1wlg{AOP$F0pK|h0Cs}_@H_|rFMt5h2?D?# z5Hz$G1b`Po0C))mfR{l4cm)K2-+=(|DhL4o27-pVKmhnX2mr5v0PqJ80A2?H;0+J} z-UI>QEs%DcB3f0YsB!s0Y+Mp6$+)CkLh{SfUCGAf=D)!UIWB$nap??>$GF6rs+a~P zwVZfOwM5!TG$>mvBHN&>gh&s{)v-aTyoei=+7V-Kye|pXRu8cJe$p_|dqzxLF%F+G?W`U(eO0~%wy0tXkuH_baV7fEblu#_FsbI9Jcn>Mg zhGJ)H01615*&qm=JW}s$odbf<$p=B`6o4Q`=Yk;Q=7Dr{wo;Pf?atOh5Cq`)Ab?*0 z0(cP!;PXKMzYqlQi$DNh00Q{MAb>9f0sIn>5uL4zKmflK1n|p10KXgr@Wmj2UjYL6 zl^}p$1p@fhAb?*30wIcASo&vlS1n@Etz{4PbmxBP#tI^KZO4I%L?0{HbHfZqVp+}U~~2;eJ00AB?H_)Q>yM?nC;83gcKKmcz60em$G;H@BVVhsr3 z{{jN|S`fh7Kmh+f2;l2L0KXLk@Y_HDza0edJ3!z>I|$(GK>+^&2;e^i0sKx7!0!S9 z{B97ye*^;f1`xpS0qIcFP-@?4h*Bx)Y1Pm^w!60BhfVU zl|^KmhTelH!8D}2uuVhK5t@dqz9g82F0eFcn}+HwBHJ`{DMV@-^7K0mO_Vlh8d8q- zHx2DP5bGG*`rreI)Gc0G{4_+@6FFaPrD@f4_N=d%YB8sI|n@O|_qJ*x%($03-sPz1D zGJ>>f2l`7Ls!W&;4$8DD9gj+@o#-cQSQ0l zWbE1zTgH7s-VTKiGOapLrd2WQ>2iiifYPd{MP#iBWT5ViSQw7D5Jq0L*pG=8kmxrS zQ7o;xmP8w*C}~=i&R<+w6{ESI6^k{k+5!9K8SmZC-C<3tS#pRnt=eM+JSzdVdBJ}X zeE!fPip>j)N%UgEW^@8EK{JajwqiqmE!kRW5yd*Ri$qHkiaZM-n%CEZ*zIuu8fKTg z^HG0YVx}A8dgbR5lc-l-wTNuJ@|%P$>0U|P(s>qhwvH*Yh-@8Gm{7zWlhxM=>KL>2 zxW3u-p&mWEcEl#X+o^;1Lv*aP>V2g63>2|O!H}7WH3|qWn3NKI0&5fy46ZWC3`=IY zWLAIxP$`*Jl6kFUUI)^wuCO|N`W{Avg(a`BeTEI@+kS@44`D;6PdltJ^3(@1M(D;O z{tBzor?|jwWYgAleq6{blO_^{%ug<gXHq(ihkkG=L+d>y~oDa)CAdpzEvE6?uJ) zbLHUsv9oH6DWAm^TTFcpl)Anmg-R1*-x-i2>=kL=;-~HU8W&t#*x-d)htk+=XQ9?vq;)PsVXZ^OYriSfJ|R4W%^4zvO5GMqp~gkZE(uB$wEHb0ThP7?kqX*_$4sHB)^!RsuK7Gm8@52L zu!wAdS_F{_)PyNi4${*lo`Tfc9Z9YcPrVz9y+P=Ixwdm$jM)1NL~0&PnnLxF;*(HB z0QMq`izz+&DcvSe;SdUbO79;=AxecKDDaafN_}z!QRLxbXkt9W(sV>O>kHKY}8nh;F@SQV`Nz zcQX~}hMQCKbg$h@9Jefl(bOFzPuJ81*~~ zjOs*z8{LZnqh3ORQLmuDs8>;7R2K@2dJP3ey^aDm`X&mDdK(2s{Rss|?L&c4e?fs! z-6$~XeH13@k*JfVAI8>Fv7~9Ak=XxQ>h5G~shU5TBhi*Lm1`It16WVh_dgO(lV%c) z#0xAU+eplYNRPx@Vk5C{-c+rp@K~H5XHZ-w8;ke;F&6%|vAD}3vW>-uAW~xyBO`(d zQ7>*{iaZuqN*gp56K751#$tx0McY`M$}RG83VGUM9FcA@wwwymSR4RFnZ?8{FJ&>2 z_gYBmGK-14*CN#FWfl{8ugg$F-ixxBSj{g60f4fY09*+I0A(=&xEcfi%3=br1Ox!e zVxl2-NMVY)-wNHi>;u!wBK@*arvuv{G*mWlI-(h<7PvHFtW zKF4Wk&^9nLEuz?X=r}+SI!+LTP6|kKXKN}*duOW)1R>`J>F8|rfFSbHK!Edt z05<>xxPc(R4FUl!9R#=x5a4_uzzqgLvqM0D8wvv4Fc9EQ00C||2yiEY05<{zxRD^h zodkkrM}Yu08U(oSfB<(g2ykOSfb)X@cM1q_-vt5gR1h>f76iC)Ai$jl0^I2!z-58} zHy#AI2_V3o0Rr4akmAnPNg%*wfdDrd1h{Mv;Br8K%LM^$3J7phL4cbEf@Y_K0Cy$` za5F%FI|~H3vq6A62L!m8Ai&K60q$H7GfSV__y{Z9ldlU<@;dJWFViC~0GcW`8HUHt;ZUhK`txRHOC z1SJ~zJ1ipG$bSGLeXqDGzRlR{HqM~&F}>z632)i=H~9>)v|}6aXIezI0Y4fdHQ+J) znv-9NKl^>cZb@>_*ebQTKWtaxM<7xI9*-*MN`fP2#nG7j&XP1n@UO0DlVv@V7w# z|04+Ce*yvg&meGO9|+*@fB^m%5WwFB0lXUo@b^Ffe;)+!4?qC_5Crg#K;XoF5WxQ( z1n?dZzz=``{xJyP2SEV;1O)K^00I23Ab|f31WxpV0RDFnz&`~6{4)^14}k#wISAl~ zK>+^(1n?sufd4O$Vl~~k)pTQdje=N7rW?#BBubK+vc5(Ux9+&=RWvWBo6+&v)m_~f z`sy``{)hgF(ng}$XQoADn|)4!D8afzc@cMGt{tIuN3q411nZ7 z4c!Hinud}-zvOjCwX{Ju1j^C=)*WBJ5_85j4V}s@@(qFQ`DJVx`V~z>Uy_a6?&|&W z=+W)nU_5mxtkYPjxz5w(4YoX&0W3i=anZ30!ZIb zQeP&!p}fG-o-KarEh1a|TndqjpTYg+=O;=VmLBUbes;bT>la)6d;pQUj19?HLw9rf zGKTS?E@LlK{OmAo;Q2So>iKueC-vof3fdh=>Jq)fVKAQGB zPNx0Se%kM(7d{I*GHL(ZMA|=}P5aKNwBI{}_AgOFrQnqS?O&z$LJPVU(Ehc>w12&r z_HS0w{_T3&|B3Q01^c43|4TdVyEoGQ{VlZru!HvdyJ+9jP5X~~Y5$2pTC3o%lq)Uh z4bcA6V%i^y8hZ-9Lg$Ku)7KSz72J@qEx({0akP_oZF_ot`Ys;0ClXBMbM+Nofd49Y z)${yp{Keh!`?T4Y&u%+9`?A8e!?Q0fY&t=?c<`h!}+jrblARN%Wflh*1@Ka=|jJ(u9}zH( znH}2QUY@1(KiiGTgT4*y`zavXJJ!yiRp5Vdi(@>_T=i=`Q{PCxT zwg%`kb-6uh-l0b75KpSZVWa>noVq{;XigI+k9H48OYsc!xCeR% z4)D6Y-a&59fPtwl`ZNmLzyT?#sW6u6bYa6j)dkBgr&AqfYKk+_=5RR31CQ4=EDenc zkDK=B9EW50iQd%IboU^aC(V~OFx}@!NpZP6Fg_^N?Mihxohkeue5Up%;B!>Nk>WJK zr6aIx{Gn@_k?M3)+8t^ZnOQWPCnOdqjnhE!y}jXpH7H6O7Q_(vY@|wtDL1X7N1dro zV87jV9@GnPu8Q!7@7SYj@%Jcr^x@=TlutKAv<^mF@b}AaYy8-*MDdg;O1Jr^0I0gnPrR8c%&z5WAR7t#^Bubvz;YoMrR51Qgn_eh|U$kXd(Iv=Q_zY zDmpqkMw}AO6ceInh)Gdg#nECK&d>>BgdKw*?RT^5+v_(SW9!%WHxSy}`?mFCxOYr( z&NPuTMdVHqh1J#Jijr#oLjSlj#Bx>^ejA~_G*l6;4V70_hZ`rC)-GtME1g{1P?W!5 zPDs{5dGm5ZSB@(SEgaVvntj>g+^kZuT+At{t*wjrOB=!^k+5H!T2)(G-BcF#&uom8 z;S2w)%5%LIW>rlMnE3Rc`OE66%KZJekqPw~p~wWk^dYaQd}1HY!f@kw{|#QjKOj(5 zTQSjJ6?c4-C)2@%8yo!<4RuZR{^eDXO8*pp-i3`cj8*ZFfQ_@^iwD258+F*WC0B@E*R6_kr)uW7vU94=n3c=@Agp>+rsIJ1%uID)6ULjpIsU3~ zWoJ}flh`jDwDoAJDr)7?a7VCJc|i8|&|?-{$bl*Y$t zqVs$W?Y7Wg7#iCtwh+g4078p@ui_vZP z905nYW22+XA)MLHVyE~`=hKB+~KO&R1fcK-@V^rc-Y@@5yyGnz7NJPM1T*PyafCW9(Qu z*-m4W^PB+U){VcE$BrJo74!+vt3fwCPA_W;ab(ZYqpuU)kDrtSUEOo^=rE+@4uM_` zIt)D8jO!N)quFPS8tC@48*U%*=|SEC*qcBKYD=syQ*WeSzXcyMkZ!tfZu*GxGX^a8 zM8$b0oiky|Sln?*oB5z0!S3ZJpfEe#x5hDNkjuI71T@WUmXRL(7GtdPf1Ir4tHJ&X zUm~rc)S`*M*&sRD{we+{@l9M9ROF@m?r;>OkGS1gknX=Nr64`?*3@8n_8M0(eMXCW zetMufea7tc?Ahs=dFlSV^byd{OZRZUd;)ko>^R8I@$GmI9PfeSJ#f4Sj`zUv9ys0u zx(D0=E_J&k)olILQ`3P;P?;+A=y4@&t7iq6j^sW4-g+^Y=n*Jw{OBC?B(C9ipp~4~ zTC{2T=U*S?C&3#W0b-lK`QG7_br*Am*zS;Zoe;;PTi)n*v}w~1G-+vO-Eh+*x8h=^ zdQH@;*m_+^Yf;+hw;X6|P6;s8{9;wte(Uz=xBY0-b-WM6#}iQcc(Io2x<7kWJyXdg z`v3f1|Bk)ArH9mc-KuD(qHij?U(v&gx>URjSM)SRr(5D^-kdpS`!n&2@8kVbvu0#X z^XF#gOv|30JH?;5FkI#jmP90f(v-8ti;3_^o)p=&lT={xBHQjQ>Qa9;;y~)J9vzTc zwCGN-N&OVWh0^C+4O&jxph7jPl0~QZB&Gf_d!xUE)QOE z5H8OL*t@Cdz$+3WHTyH{J(IC}+jTes!)a6Cs_Ton;E1$r_~rWQEmBE40-LUXQrVX_ z7Tw|cn#v>6z6Qv3l*)eZIKm2pDw*C3;E&7TO177N=ilYv$_(%2WY)=*fOi|&O65w> z`(whmxU#_eAk4VjTv_a;PrO}e#-nJh*t?R{1{jZ{Qt54?${>S0uJ<~~+F-6kyfoLi zh8o*Jn!UdyKTkBM$D`hAQX65=dAr5Cn~rRxu^kF6-V$o(JH}pA)_VPryG}E9gS2}$ zlh>1tH&EH&{W(>#xw6r_g(^8*dDy#+D!E+Q;@wG=DaJ#@wpNntY;McOFx@Ig9UPuc{4Y#&bN4OH{cNgPNg zmE0cmDhkA<)5+YwXzoyohYe)Ra}YdtGwU6u;vy8&Z^6#+*aO|T*8^WNu7s!@3eNS9 z-k5=#ZV&n3T>tQmKD@vv3@<4;*KfJWH-V~yM{u=w)!_0nVGPYg&9Q#5&x<}VPU=OA zj`fwkLbzg#`iN@_2G1A9Sn|lRzG(2Z!WbvZWrMF1#%Z!#?E4C*$H#g8S1Udy)==>pAGc9w-c?ej^8@7Viz=&H`s3brw0pOs7;3?m{gh$C#NS z6@;7qK@diflgvz&3c^j(1-C{1GSkg_mvH}Bi^z3mrt#h*+)t8-I;&fYJi@mE2kyT1 zb8ym};@kkFsCQ{iFGdr?Q-$w`q**-%oHQr>@;hsONt$%jQ?({+rh@6NFJ#T2)*Oqf zuNuAXZYX8R#c`4=z;j1vD5p8EjFX&<(coV8BbJm}CEV_#;IoG#h3^Gwcf~H&tk;_N zqUt-FY~1i?mbAx7W)WuP=PcP`m9TXRP<{OGq3phS4EAZxm$c@WWIdN8EoZT$D^9YH zj<@v^me4QZ%RVE_K@{EpQo|DZL3~rf?cM@Dw>wDqhCX|z~XHDOE%8xEoecfc^?hMFrzT+e>KoFqi;Ja7$5+T$dpbOtspXUP_;gk$wq@U^cOQo9drV$E)?c_XT< zxm9brh0jgCKm0Ol76;T(J)||ewPuR&O`_g?rei&@Gzv&w9mNtcCx9C2gc-UP$L~3HF6zTp!8y;^$52Fo6c>YH zdzKfFJ`%|V4dDgkiAJZ?UOD7NI@l|W_qZNaE6V$fuejcEv1bi@>pu|9xF~-X!50= zyl1Al;-rNp&&_lsEHYP|cWDtF6pPFiCoMD?MaRb?msAjLT4-`xbg0ZU7o+>Nh>n^? z9;qPQ1~`nO4q&FaP9066a?G977c3gW`@zC}CW+{DE!84(3A-E|OxyDUkYaLPs5NO) zXSlh9-Nc%`TJuKIq$TWDt!XY{UuI2DFhC};^gvZDVLxIC{V-=tBA2j7Swg?h8I#B* z>`2V|Y0guv5^gsOeD=^>!p>pMY^_PRifRda4NDfpN#qiCIZNuT61ILT`1<(e5_S`7 zeqU?eh^kt`{+1=}aT2+NeS;-;$4TT8_HQh?*DB$5QxMPGuDOIA2~L`Gv(`LB?aC$W z6qam>lgK6Pe3tCAO4#~RZQWeL$^~SX)?5e$wS-;IHhSYEatZqjmiP+Qxnc~TwfkOR zNp_q>E@9tg$$~hET*Ce@megA%9IJQ^D|-UI$|dZnyad~*HNOUsHD_o|a|t`2HT~x+ z4>M7f@vk+_CG2w63~0@Tq*;!Gxm9bT^%=<5nb!g2mwdPcmar`> ziN;Cf681ipbXXYAHl3_B?tK|G7gAAaRB*13 z-sIjnGk{|3<0)5_Fa{FXvA!AyK)sL_#x55|2OHzkhYoP2k4hhG3~~ETgwk-~Oh0?T zIRgrZ!roXhV8FSM!yi?IE2$aaqE#ZKrB3)<89FkZEWJw7sgDS~!%d z19UTp9K$FaN{B(Hz|Ld{)3c28MoKSEA4!e{M%R?nY z(jiKUCP_LprhMMWnImz#Vr7uV@&3@K{=AV%`y&<-Iyw*%Df)C$Af(1lU*XWW)8~pm zLGA$vz#$ki9tr`3j1B-%LAQe9Q#vKaKhg)$C!@H36!#3ja_nK3B`il6w^B|3w#FRCI|D>N_?1 zjE%lkD_Pb|->6~J-=dK-D3^uHvnuIVw7H$Xu zN7@+Vk*b<-s3u%ORji!Q4Gx`gKFPD*vrITr9IkfkjdqvkamR$Ao(rhrin#WB9`HQi zm~g^suD81$uv2G-Bh&C~h6-tVHuiX)@mvcf$1}9^w9?*@GmI-6dB0h*PT7|X+D z$AsZ5pV}8PH5p_Q>pIW(+z+VXI^X4-dB10qqk5Pp*YmmO+Gjnjj=94;8$I0e57>Nx z#g?-<1{_4dtf9_OjFm~OCyW!Nv1edxn$1`snXz)uMl!ZEW^C;JVBPLe#yVhZo@wl9 z_H1r4W6HB7F=G>8%;|NkbsEyQoiLYA=C~)Nx$~2lOIPNKW9Ckm<_@PQbJTBaj{B{D za|!zGwEH~|{MLal#SKcb|35U;a{h;hn!Y#x219LQze8=L8fwGLq2^4(^C65dXW9-T z|D(e#KNdO92@2~)Jl@Eq=MXt_Y;j$fBoKAvTpcra23dQ;7*0{G&3%h8#{<}6j)sXI zbK2au9d#CS?A@1+kyh{Q=7QhyVAncNvYPw0qt4=;niG!5IYA$;z4!9Jxqr%_niaIc z|AL3qf6jr9i9E|_d%^#Fv|xT#^9!P@tj(*PM;~i9@|AoczFZI0RhNb8%FFRlwJ57= zT3Q_zp~8zoa|??K1mXDKhM!$l)}WC^)eQjWgcjnnDP_2ztRmdFAPf~{b_zVF@42Vt zd+p|!J*EHJ5+q0pYU+xu|P^ky}Y3+5)Rcz8bqkPx}>5}o3kIFQeWCs9$H$`h#sr1 zE4@x!A8x2?qz}~T+jJ4CDQUPa+|VdW>zhL54dL&F<^``$>H{5y^suU|c@FkO8Pw!vbpNI+6q7K z==8-|wVaQfq>@|_Ds5^AmDW`^)zq?9tUv7iGu0+XFxS_~a~1>PM3^U*&s9@xBfcBQ zyGHce0V33hlPE$o0;W$*7HKl7(FqBUN6>fs=4mGtj5S*T#)eDGv*{w%S*BCeYjj$t zZMnPgd6C8J;rrM^)a9OS>uPv#O69D6A zBq&_m5WwN!b4fB!Lx6^?#k!s-%wD78$(fGhsjIJtatY>`GJ&xlZlr-$8*avthU!bo zawI_rPz@uJ$W%$D=@#sMVAROzBCZR`og_0?Y^32d#aSbXY^M)Y&JyaFb@tN zCJ6e;kJ>uKb0ubR90fuQeZZ51IWKY-mXu!CR4*qIycp-7bL=2^F9&uw16CH7o%j+g(fhDYyt1j^qqTyZB25&hB(mc*-`kDXA0YJm%klhy zqCGW{ok1etO2kh$-+PX?lOa0P`_S=xpSX2VB0GacS3>>}^F8W#J44O)r{npjH`j%TQvQ+y{0 zpMG4c@8;wW?&A5#MIqVr_oMM#WM9EB@Rgjs-;f_g^bZpCw)0M&6Mv(PpQZTSHhw;OYgWgVqxi*v0CW6`f05!x6@QrG*C_r*#hkFE%$F+WW zLG$&v&JIe??c;iZjjzXby^XKOwSFlv64LNYH#euJ!8(ny<&Te)&L; zQ$4P?DEpeP$F+X(K=bvu?o#^paoua<>v64LG0^&YTv64LF3@~E zuJx+~_Hpe$U!E7giW5Dq1B$Q5g&x<%if$uh9T0gkAk8AyyUi+`dwSFj1*LB+TxYm#0{mhMxYf%(nj^^ue?YHsuxDF`3 zM8(E+)W+B2y2Hl*BFVVMWh&u#|C;BA!9rZ7TZAIEfp}DwXx&1xMDxZ7ezZ2E&$@9u z+v&SL%vJjOJ3g{YTLJU?u45OooxbbFTJVQpJrh;yVTUv$Rxw{yEaYAA{rGy$zRp~q zME^nXebBEiF1A<^fJe3NcbVZ0m;)*q^@lFK5G!5Bm0go2%^W zT(f@D;sW+(q|mQ5dsMrNSzlEwuvsTWc@*XUY6da`1(NR#O&E6F>AK8Wh}MR*NbDx%%qI%$bd`YNu0$vA4y``vrA&u`X;SnsJ^oPaPd77 zpK4XPxxVS9I4^DO#g5vHD~r`wlq8WVUz13cw|%5$`b~91a)o5}O$*7IIA*#s)+v2j zH#669!%cUK`BWrXE;OcKdt%VX0*)^3;X(WpBwMCGE|nUeMz%d|i<>*_X~0lu?!wvg z3ql1K=3~l}^Peuq%|c}&lz+vAv*#DiftE$W-31nM)uDo*vKGu=C_?j!F3Ou-6uM~c z+)D};g%-`uD=MHC@ZwKtsI(DJ!C*!HoOB>Cuc$C@PAE4kH*1=xZ;CX=b3);=l1Pat z#~j=kwuz)Y_5x2ws%q_GLdr=}l-J`ou_NVnjf$GOTB*T3P}W!%sw}B3Q;$CRt)>t? z53%}A9f11M#ztkE)2VUK_R8z(!!~ak6FE@M4-o85Et)?^os(nch3yKt_QbKsYFtr+ zJUnQmLDEWHLWhJK>O~fQUOb#NJFjq3q@+UCDr%dumNr#YmrbfF6IoQNENQG1S!F9~ zVNX&#vSGae>Z>Cni~BAsLJxYfI0mvB>iGO-g)7xnu(AwT zU6TlTIg|)pzP1!vXwf>C%SqGF_{#stxNhJ)HXQ*(gs)YkIxjo#6FZ2n_; z$(vpes;amU1-!~?`oG-~K#hL4g9%=FloZP~?kA1c_kWjx@5G;Ozrz_oP2hO}6Hy_F zxwrS<5=iK`HZ)#8PoOWhX&Wwy`THVTPt)rlr{C_-^*~C15dnqwa}93+gHqetf5jG* z$0b#bFIM``|C=p)wzrK&^Q21AL04PL2QB593!HU<!H+MIzMuQ96Dfnx}pEjrGUz(rvxku65dN;`8 b`#SKIM7OIIk?~82f9(OO5wrnpRq?+8{svb4 literal 0 HcmV?d00001 diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx2/main.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc/main.c similarity index 79% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx2/main.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc/main.c index 590541a9e8..959051f92c 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx2/main.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc/main.c @@ -1,11 +1,9 @@ #include -#include -#include "../../nrLDPC_types.h" -#include "../../nrLDPC_init.h" -#include "../../nrLDPC_bnProc.h" +#include #define NB_Z 51 void nrLDPC_cnProc_BG1_generator_AVX2(uint16_t,int); void nrLDPC_cnProc_BG2_generator_AVX2(uint16_t,int); + int main() { uint16_t Z[NB_Z]={2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,20,22,24,26,28,30,32,36,40,44,48,52,56,60,64,72,80,88,96,104,112,120,128,144,160,176,192,208,224,240,256,288,320,352,384}; @@ -15,6 +13,8 @@ int main() nrLDPC_cnProc_BG1_generator_AVX2(Z[i],0); nrLDPC_cnProc_BG2_generator_AVX2(Z[i],0); + + } return(0); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx512/Makefile b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc_avx512/Makefile similarity index 100% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx512/Makefile rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc_avx512/Makefile diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc_avx512/cnProc_gen_BG1_avx512.2 b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc_avx512/cnProc_gen_BG1_avx512.2 new file mode 100644 index 0000000000..da72d4a934 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc_avx512/cnProc_gen_BG1_avx512.2 @@ -0,0 +1,583 @@ + +#include +#include +#include "../../nrLDPCdecoder_defs.h" + +void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) +{ + const char *ratestr[3]={"13","23","89"}; + + if (R<0 || R>2) {printf("Illegal R %d\n",R); abort();} + + + // system("mkdir -p ../ldpc_gen_files"); + + char fname[50]; + sprintf(fname,"../ldpc_gen_files/nrLDPC_cnProc_BG1_Z%d_%s_AVX512.c",Z,ratestr[R]); + FILE *fd=fopen(fname,"w"); + if (fd == NULL) {printf("Cannot create \n");abort();} + + fprintf(fd,"#include \n"); + fprintf(fd,"#include \n"); + + + fprintf(fd, "#define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a)\n"); + + + fprintf(fd,"void nrLDPC_cnProc_BG1_Z%d_%s_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) {\n",Z,ratestr[R]); + + const uint8_t* lut_numCnInCnGroups; + const uint32_t* lut_startAddrCnGroups = lut_startAddrCnGroups_BG1; + + if (R==0) lut_numCnInCnGroups = lut_numCnInCnGroups_BG1_R13; + else if (R==1) lut_numCnInCnGroups = lut_numCnInCnGroups_BG1_R23; + else if (R==2) lut_numCnInCnGroups = lut_numCnInCnGroups_BG1_R89; + else { printf("aborting, illegal R %d\n",R); fclose(fd);abort();} + + + uint32_t M; + uint32_t j; + uint32_t k; + // Offset to each bit within a group in terms of 64 Byte + uint32_t bitOffsetInGroup; + + + + // ===================================================================== + // Process group with 3 BNs + fprintf(fd,"//Process group with 3 BNs\n"); + // LUT with offsets for bits that need to be processed + // 1. bit proc requires LLRs of 2. and 3. bit, 2.bits of 1. and 3. etc. + // Offsets are in units of bitOffsetInGroup (1*384/32)12 + // Offsets are in units of bitOffsetInGroup (1*384/32)12 + + const uint8_t lut_idxCnProcG3[3][2] = {{12,24}, {0,24}, {0,12}}; + + + fprintf(fd," __m512i zmm0, min, sgn,zeros,maxLLR;\n"); + fprintf(fd," zeros = _mm512_setzero_si512();\n"); + fprintf(fd," maxLLR = _mm512_set1_epi8((char)127);\n"); + + if (lut_numCnInCnGroups[0] > 0) + { + // Number of groups of 64 CNs for parallel processing + // Ceil for values not divisible by 64 + M = (lut_numCnInCnGroups[0]*Z + 63)>>6; + + // Set the offset to each bit within a group in terms of 64 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[0]*NR_LDPC_ZMAX)>>6; + + // Loop over every BN + + for (j=0; j<3; j++) + { + + fprintf(fd," for (int i=0;i<%d;i+=2) {\n",M); + // Abs and sign of 64 CNs (first BN) + // zmm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; + fprintf(fd," sgn = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[0]>>6)+lut_idxCnProcG3[j][0]/2); + // sgn = _mm512_sign_epi8(ones, zmm0); + // min = _mm512_abs_epi8(zmm0); + fprintf(fd," min = _mm512_abs_epi8(sgn);\n"); + + // 32 CNs of second BN + // zmm0 = p_cnProcBuf[lut_idxCnProcG3[j][1] + i]; + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[0]>>6)+lut_idxCnProcG3[j][1]/2); + + // min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0)); + fprintf(fd," min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0));\n"); + + // sgn = _mm512_sign_epi8(sgn, zmm0); + fprintf(fd," sgn = _mm512_xor_si512(sgn, zmm0);\n"); + + // Store result + // min = _mm512_min_epu8(min, maxLLR); // 128 in epi8 is -127 + fprintf(fd," min = _mm512_min_epu8(min, maxLLR);\n"); + + fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = conditional_negate(min, sgn,zeros);\n",(lut_startAddrCnGroups[0]>>6)+(j*bitOffsetInGroup)); + + // Abs and sign of 64 CNs (first BN) + // zmm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; + fprintf(fd," sgn = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[0]>>6)+(lut_idxCnProcG3[j][0]/2)+1); + + fprintf(fd," min = _mm512_abs_epi8(sgn);\n"); + + // 32 CNs of second BN + // zmm0 = p_cnProcBuf[lut_idxCnProcG3[j][1] + i]; + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[0]>>6)+(lut_idxCnProcG3[j][1]/2)+1); + + // min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0)); + fprintf(fd," min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0));\n"); + + // sgn = _mm512_sign_epi8(sgn, zmm0); + fprintf(fd," sgn = _mm512_xor_si512(sgn, zmm0);\n"); + + // Store result + // min = _mm512_min_epu8(min, maxLLR); // 128 in epi8 is -127 + fprintf(fd," min = _mm512_min_epu8(min, maxLLR);\n"); + + fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = conditional_negate(min, sgn,zeros);\n",(lut_startAddrCnGroups[0]>>6)+(j*bitOffsetInGroup)+1); + + fprintf(fd," }\n"); + } + } + + // ===================================================================== + // Process group with 4 BNs + fprintf(fd,"//Process group with 4 BNs\n"); + // Offset is 5*384/32 = 30 + const uint8_t lut_idxCnProcG4[4][3] = {{60,120,180}, {0,120,180}, {0,60,180}, {0,60,120}}; + + if (lut_numCnInCnGroups[1] > 0) + { + // Number of groups of 64 CNs for parallel processing + // Ceil for values not divisible by 64 + M = (lut_numCnInCnGroups[1]*Z + 63)>>6; + + // Set the offset to each bit within a group in terms of 64 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[1]*NR_LDPC_ZMAX)>>6; + + // Loop over every BN + for (j=0; j<4; j++) + { + // Loop over CNs + // for (i=0; i>6)+lut_idxCnProcG4[j][0]/2); + // sgn = _mm512_sign_epi8(ones, zmm0); + // min = _mm512_abs_epi8(zmm0); + fprintf(fd," min = _mm512_abs_epi8(sgn);\n"); + + + // Loop over BNs + for (k=1; k<3; k++) + { + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[1]>>6)+lut_idxCnProcG4[j][k]/2); + + // min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0)); + fprintf(fd," min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0));\n"); + + // sgn = _mm512_sign_epi8(sgn, zmm0); + fprintf(fd," sgn = _mm512_xor_si512(sgn, zmm0);\n"); + } + + // Store result + // min = _mm512_min_epu8(min, maxLLR); // 128 in epi8 is -127 + fprintf(fd," min = _mm512_min_epu8(min, maxLLR);\n"); + // *p_cnProcBufResBit = _mm512_sign_epi8(min, sgn); + // p_cnProcBufResBit++; + fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = conditional_negate(min, sgn,zeros);\n",(lut_startAddrCnGroups[1]>>6)+(j*bitOffsetInGroup)); + fprintf(fd," }\n"); + } + } + + + // ===================================================================== + // Process group with 5 BNs + fprintf(fd,"//Process group with 5 BNs\n"); + // Offset is 18*384/32 = 216 + const uint16_t lut_idxCnProcG5[5][4] = {{216,432,648,864}, {0,432,648,864}, + {0,216,648,864}, {0,216,432,864}, {0,216,432,648}}; + + + if (lut_numCnInCnGroups[2] > 0) + { + // Number of groups of 64 CNs for parallel processing + // Ceil for values not divisible by 64 + M = (lut_numCnInCnGroups[2]*Z + 63)>>6; + + // Set the offset to each bit within a group in terms of 64 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[2]*NR_LDPC_ZMAX)>>6; + + // Loop over every BN + + for (j=0; j<5; j++) + { + + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + // Abs and sign of 64 CNs (first BN) + // zmm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; + fprintf(fd," sgn = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[2]>>6)+lut_idxCnProcG5[j][0]/2); + // sgn = _mm512_sign_epi8(ones, zmm0); + // min = _mm512_abs_epi8(zmm0); + fprintf(fd," min = _mm512_abs_epi8(sgn);\n"); + + + // Loop over BNs + for (k=1; k<4; k++) + { + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[2]>>6)+lut_idxCnProcG5[j][k]/2); + + // min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0)); + fprintf(fd," min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0));\n"); + + // sgn = _mm512_sign_epi8(sgn, zmm0); + fprintf(fd," sgn = _mm512_xor_si512(sgn, zmm0);\n"); + } + + // Store result + // min = _mm512_min_epu8(min, maxLLR); // 128 in epi8 is -127 + fprintf(fd," min = _mm512_min_epu8(min, maxLLR);\n"); + + fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = conditional_negate(min, sgn,zeros);\n",(lut_startAddrCnGroups[2]>>6)+(j*bitOffsetInGroup)); + fprintf(fd," }\n"); + } + } + + // ===================================================================== + // Process group with 6 BNs + fprintf(fd,"//Process group with 6 BNs\n"); + // Offset is 8*384/32 = 48 + const uint16_t lut_idxCnProcG6[6][5] = {{96,192,288,384,480}, {0,192,288,384,480}, + {0,96,288,384,480}, {0,96,192,384,480}, + {0,96,192,288,480}, {0,96,192,288,384}}; + + + if (lut_numCnInCnGroups[3] > 0) + { + // Number of groups of 64 CNs for parallel processing + // Ceil for values not divisible by 64 + M = (lut_numCnInCnGroups[3]*Z + 63)>>6; + + // Set the offset to each bit within a group in terms of 64 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[3]*NR_LDPC_ZMAX)>>6; + + // Loop over every BN + + for (j=0; j<6; j++) + { + + fprintf(fd," for (int i=0;i<%d;i++) {\n",M); + // Abs and sign of 64 CNs (first BN) + // zmm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i]; + fprintf(fd," sgn = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[3]>>6)+lut_idxCnProcG6[j][0]/2); + // sgn = _mm512_sign_epi8(ones, zmm0); + // min = _mm512_abs_epi8(zmm0); + fprintf(fd," min = _mm512_abs_epi8(sgn);\n"); + + + // Loop over BNs + for (k=1; k<5; k++) + { + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[3]>>6)+lut_idxCnProcG6[j][k]/2); + + // min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0)); + fprintf(fd," min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0));\n"); + + // sgn = _mm512_sign_epi8(sgn, zmm0); + fprintf(fd," sgn = _mm512_xor_si512(sgn, zmm0);\n"); + } + + // Store result + // min = _mm512_min_epu8(min, maxLLR); // 128 in epi8 is -127 + fprintf(fd," min = _mm512_min_epu8(min, maxLLR);\n"); + + fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = conditional_negate(min, sgn,zeros);\n",(lut_startAddrCnGroups[3]>>6)+(j*bitOffsetInGroup)); + fprintf(fd," }\n"); + } + } + + + // ===================================================================== + // Process group with 7 BNs + fprintf(fd,"//Process group with 7 BNs\n"); + // Offset is 5*384/32 = 30 + const uint16_t lut_idxCnProcG7[7][6] = {{60,120,180,240,300,360}, {0,120,180,240,300,360}, + {0,60,180,240,300,360}, {0,60,120,240,300,360}, + {0,60,120,180,300,360}, {0,60,120,180,240,360}, + {0,60,120,180,240,300}}; + + + if (lut_numCnInCnGroups[4] > 0) + { + // Number of groups of 64 CNs for parallel processing + // Ceil for values not divisible by 64 + M = (lut_numCnInCnGroups[4]*Z + 63)>>6; + + // Set the offset to each bit within a group in terms of 64 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[4]*NR_LDPC_ZMAX)>>6; + + // Loop over every BN + + for (j=0; j<7; j++) + { + // Loop over CNs + // for (i=0; i>6)+lut_idxCnProcG7[j][0]/2); + // sgn = _mm512_sign_epi816(ones, zmm0); + // min = _mm512_abs_epi8(zmm0); + fprintf(fd," min = _mm512_abs_epi8(sgn);\n"); + + + // Loop over BNs + for (k=1; k<6; k++) + { + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[4]>>6)+lut_idxCnProcG7[j][k]/2); + + // min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0)); + fprintf(fd," min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0));\n"); + + // sgn = _mm512_sign_epi8(sgn, zmm0); + fprintf(fd," sgn = _mm512_xor_si512(sgn, zmm0);\n"); + } + + // Store result + // min = _mm512_min_epu8(min, maxLLR); // 128 in epi8 is -127 + fprintf(fd," min = _mm512_min_epu8(min, maxLLR);\n"); + + fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = conditional_negate(min, sgn,zeros);\n",(lut_startAddrCnGroups[4]>>6)+(j*bitOffsetInGroup)); + fprintf(fd," }\n"); + } + } + + + // ===================================================================== + // Process group with 8 BNs + fprintf(fd,"//Process group with 8 BNs\n"); + // Offset is 2*384/32 = 12 + const uint8_t lut_idxCnProcG8[8][7] = {{24,48,72,96,112,144,168}, {0,48,72,96,112,144,168}, + {0,24,72,96,112,144,168}, {0,24,48,96,112,144,168}, + {0,24,48,72,112,144,168}, {0,24,48,72,96,144,168}, + {0,24,48,72,96,112,168}, {0,24,48,72,96,112,144}}; + + + + if (lut_numCnInCnGroups[5] > 0) + { + // Number of groups of 64 CNs for parallel processing + // Ceil for values not divisible by 64 + M = (lut_numCnInCnGroups[5]*Z + 63)>>6; + + // Set the offset to each bit within a group in terms of 64 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[5]*NR_LDPC_ZMAX)>>6; + + // Loop over every BN + + for (j=0; j<8; j++) + { + // Loop over CNs + // for (i=0; i>6)+lut_idxCnProcG8[j][0]/2); + // sgn = _mm512_sign_epi8(ones, zmm0); + // min = _mm512_abs_epi8(zmm0); + fprintf(fd," min = _mm512_abs_epi8(sgn);\n"); + + + // Loop over BNs + for (k=1; k<7; k++) + { + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[5]>>6)+lut_idxCnProcG8[j][k]/2); + + // min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0)); + fprintf(fd," min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0));\n"); + + // sgn = _mm512_sign_epi8(sgn, zmm0); + fprintf(fd," sgn = _mm512_xor_si512(sgn, zmm0);\n"); + } + + // Store result + // min = _mm512_min_epu8(min, maxLLR); // 128 in epi8 is -127 + fprintf(fd," min = _mm512_min_epu8(min, maxLLR);\n"); + + fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = conditional_negate(min, sgn,zeros);\n",(lut_startAddrCnGroups[5]>>6)+(j*bitOffsetInGroup)); + fprintf(fd," }\n"); + } + } + + // ===================================================================== + // Process group with 9 BNs + fprintf(fd,"//Process group with 9 BNs\n"); + // Offset is 2*384/32 = 12 + const uint8_t lut_idxCnProcG9[9][8] = {{24,48,72,96,120,144,168,192}, {0,48,72,96,120,144,168,192}, + {0,24,72,96,120,144,168,192}, {0,24,48,96,120,144,168,192}, + {0,24,48,72,120,144,168,192}, {0,24,48,72,96,144,168,192}, + {0,24,48,72,96,120,168,192}, {0,24,48,72,96,120,144,192}, + {0,24,48,72,96,120,144,168}}; + + + + + if (lut_numCnInCnGroups[6] > 0) + { + // Number of groups of 64 CNs for parallel processing + // Ceil for values not divisible by 64 + M = (lut_numCnInCnGroups[6]*Z + 63)>>6; + + // Set the offset to each bit within a group in terms of 64 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[6]*NR_LDPC_ZMAX)>>6; + + // Set pointers to start of group + // Loop over every BN + + for (j=0; j<9; j++) + { + // Loop over CNs + // for (i=0; i>6)+lut_idxCnProcG9[j][0]/2); + // sgn = _mm512_sign_epi8(ones, zmm0); + // min = _mm512_abs_epi8(zmm0); + fprintf(fd," min = _mm512_abs_epi8(sgn);\n"); + + + // Loop over BNs + for (k=1; k<8; k++) + { + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[6]>>6)+lut_idxCnProcG9[j][k]/2); + + // min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0)); + fprintf(fd," min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0));\n"); + + // sgn = _mm512_sign_epi8(sgn, zmm0); + fprintf(fd," sgn = _mm512_xor_si512(sgn, zmm0);\n"); + } + + // Store result + // min = _mm512_min_epu8(min, maxLLR); // 128 in epi8 is -127 + fprintf(fd," min = _mm512_min_epu8(min, maxLLR);\n"); + + fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = conditional_negate(min, sgn, zeros);\n",(lut_startAddrCnGroups[6]>>6)+(j*bitOffsetInGroup)); + fprintf(fd," }\n"); + } + } + + // ===================================================================== + // Process group with 10 BNs + fprintf(fd,"//Process group with 10 BNs\n"); + // Offset is 1*384/32 = 6 + const uint8_t lut_idxCnProcG10[10][9] = {{12,24,36,48,60,72,84,96,108}, {0,24,36,48,60,72,84,96,108}, + {0,12,36,48,60,72,84,96,108}, {0,12,24,48,60,72,84,96,108}, + {0,12,24,36,60,72,84,96,108}, {0,12,24,36,48,72,84,96,108}, + {0,12,24,36,48,60,84,96,108}, {0,12,24,36,48,60,72,96,108}, + {0,12,24,36,48,60,72,84,108}, {0,12,24,36,48,60,72,84,96}}; + + if (lut_numCnInCnGroups[7] > 0) + { + // Number of groups of 64 CNs for parallel processing + // Ceil for values not divisible by 64 + M = (lut_numCnInCnGroups[7]*Z + 63)>>6; + + // Set the offset to each bit within a group in terms of 64 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[7]*NR_LDPC_ZMAX)>>6; + + + // Loop over every BN + + for (j=0; j<10; j++) + { + // Loop over CNs + // for (i=0; i>6)+lut_idxCnProcG10[j][0]/2); + // sgn = _mm512_sign_epi8(ones, zmm0); + // min = _mm512_abs_epi8(zmm0); + fprintf(fd," min = _mm512_abs_epi8(sgn);\n"); + + + // Loop over BNs + for (k=1; k<9; k++) + { + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[7]>>6)+lut_idxCnProcG10[j][k]/2); + + // min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0)); + fprintf(fd," min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0));\n"); + + // sgn = _mm512_sign_epi8(sgn, zmm0); + fprintf(fd," sgn = _mm512_xor_si512(sgn, zmm0);\n"); + } + + // Store result + // min = _mm512_min_epu8(min, maxLLR); // 128 in epi8 is -127 + fprintf(fd," min = _mm512_min_epu8(min, maxLLR);\n"); + + fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = conditional_negate(min,sgn,zeros);\n",(lut_startAddrCnGroups[7]>>6)+(j*bitOffsetInGroup)); + fprintf(fd," }\n"); + } + } + + + // ===================================================================== + // Process group with 19 BNs + fprintf(fd,"//Process group with 19 BNs\n"); + // Offset is 4*384/32 = 24 + const uint16_t lut_idxCnProcG19[19][18] = {{48,96,144,192,240,288,336,384,432,480,528,576,624,672,720,768,816,864}, {0,96,144,192,240,288,336,384,432,480,528,576,624,672,720,768,816,864}, + {0,48,144,192,240,288,336,384,432,480,528,576,624,672,720,768,816,864}, {0,48,96,192,240,288,336,384,432,480,528,576,624,672,720,768,816,864}, + {0,48,96,144,240,288,336,384,432,480,528,576,624,672,720,768,816,864}, {0,48,96,144,192,288,336,384,432,480,528,576,624,672,720,768,816,864}, + {0,48,96,144,192,240,336,384,432,480,528,576,624,672,720,768,816,864}, {0,48,96,144,192,240,288,384,432,480,528,576,624,672,720,768,816,864}, + {0,48,96,144,192,240,288,336,432,480,528,576,624,672,720,768,816,864}, {0,48,96,144,192,240,288,336,384,480,528,576,624,672,720,768,816,864}, + {0,48,96,144,192,240,288,336,384,432,528,576,624,672,720,768,816,864}, {0,48,96,144,192,240,288,336,384,432,480,576,624,672,720,768,816,864}, + {0,48,96,144,192,240,288,336,384,432,480,528,624,672,720,768,816,864}, {0,48,96,144,192,240,288,336,384,432,480,528,576,672,720,768,816,864}, + {0,48,96,144,192,240,288,336,384,432,480,528,576,624,720,768,816,864}, {0,48,96,144,192,240,288,336,384,432,480,528,576,624,672,768,816,864}, + {0,48,96,144,192,240,288,336,384,432,480,528,576,624,672,720,816,864}, {0,48,96,144,192,240,288,336,384,432,480,528,576,624,672,720,768,864}, + {0,48,96,144,192,240,288,336,384,432,480,528,576,624,672,720,768,816}}; + + + if (lut_numCnInCnGroups[8] > 0) + { + // Number of groups of 64 CNs for parallel processing + // Ceil for values not divisible by 64 + M = (lut_numCnInCnGroups[8]*Z + 63)>>6; + + // Set the offset to each bit within a group in terms of 64 Byte + bitOffsetInGroup = (lut_numCnInCnGroups_BG1_R13[8]*NR_LDPC_ZMAX)>>6; + + // Loop over every BN + + for (j=0; j<19; j++) + { + // Loop over CNs + // for (i=0; i>6)+lut_idxCnProcG19[j][0]/2); + // sgn = _mm512_sign_epi8(ones, zmm0); + // min = _mm512_abs_epi8(zmm0); + fprintf(fd," min = _mm512_abs_epi8(sgn);\n"); + + + // Loop over BNs + for (k=1; k<18; k++) + { + fprintf(fd," zmm0 = ((__m512i*)cnProcBuf)[%d+i];\n",(lut_startAddrCnGroups[8]>>6)+lut_idxCnProcG19[j][k]/2); + + // min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0)); + fprintf(fd," min = _mm512_min_epu8(min, _mm512_abs_epi8(zmm0));\n"); + + // sgn = _mm512_sign_epi8(sgn, zmm0); + fprintf(fd," sgn = _mm512_xor_si512(sgn, zmm0);\n"); + } + + // Store result + // min = _mm512_min_epu8(min, maxLLR); // 128 in epi8 is -127 + fprintf(fd," min = _mm512_min_epu8(min, maxLLR);\n"); + + fprintf(fd," ((__m512i*)cnProcBufRes)[%d+i] = conditional_negate(min, sgn,zeros);\n",(lut_startAddrCnGroups[8]>>6)+(j*bitOffsetInGroup)); + fprintf(fd," }\n"); + } + } + + fprintf(fd,"}\n"); + fclose(fd); +}//end of the function nrLDPC_cnProc_BG1 + + + diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx512/cnProc_gen_BG1_avx512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc_avx512/cnProc_gen_BG1_avx512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx512/cnProc_gen_BG1_avx512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc_avx512/cnProc_gen_BG1_avx512.c index f013c9b630..fd691a66fa 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx512/cnProc_gen_BG1_avx512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc_avx512/cnProc_gen_BG1_avx512.c @@ -13,7 +13,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) // system("mkdir -p ../ldpc_gen_files"); char fname[50]; - sprintf(fname,"../ldpc_gen_files/nrLDPC_cnProc_BG1_Z%d_%s_AVX512.c",Z,ratestr[R]); + sprintf(fname,"../ldpc_gen_files/nrLDPC_cnProc_BG1_Z%d_R%s_AVX512.c",Z,ratestr[R]); FILE *fd=fopen(fname,"w"); if (fd == NULL) {printf("Cannot create \n");abort();} @@ -24,7 +24,7 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) fprintf(fd, "#define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a)\n"); - fprintf(fd,"void nrLDPC_cnProc_BG1_Z%d_%s_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) {\n",Z,ratestr[R]); + fprintf(fd,"void nrLDPC_cnProc_BG1_Z%d_R%s_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) {\n",Z,ratestr[R]); const uint8_t* lut_numCnInCnGroups; const uint32_t* lut_startAddrCnGroups = lut_startAddrCnGroups_BG1; @@ -580,3 +580,4 @@ void nrLDPC_cnProc_BG1_generator_AVX512(uint16_t Z,int R) }//end of the function nrLDPC_cnProc_BG1 + diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx512/cnProc_gen_BG2_avx512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc_avx512/cnProc_gen_BG2_avx512.c similarity index 98% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx512/cnProc_gen_BG2_avx512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc_avx512/cnProc_gen_BG2_avx512.c index 3d06fd9a39..392f076e90 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx512/cnProc_gen_BG2_avx512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc_avx512/cnProc_gen_BG2_avx512.c @@ -13,7 +13,7 @@ void nrLDPC_cnProc_BG2_generator_AVX512(uint16_t Z,int R) // system("mkdir -p ../ldpc_gen_files"); char fname[50]; - sprintf(fname,"../ldpc_gen_files/nrLDPC_cnProc_BG2_Z%d_%s_AVX512.c",Z,ratestr[R]); + sprintf(fname,"../ldpc_gen_files/nrLDPC_cnProc_BG2_Z%d_R%s_AVX512.c",Z,ratestr[R]); FILE *fd=fopen(fname,"w"); if (fd == NULL) {printf("Cannot create \n");abort();} @@ -24,7 +24,7 @@ void nrLDPC_cnProc_BG2_generator_AVX512(uint16_t Z,int R) fprintf(fd, "#define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a)\n"); - fprintf(fd,"void nrLDPC_cnProc_BG2_Z%d_%s_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) {\n",Z,ratestr[R]); + fprintf(fd,"void nrLDPC_cnProc_BG2_Z%d_R%s_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) {\n",Z,ratestr[R]); const uint8_t* lut_numCnInCnGroups; const uint32_t* lut_startAddrCnGroups = lut_startAddrCnGroups_BG2; diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx512/cnProc_gen_avx512 b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc_avx512/cnProc_gen_avx512 similarity index 80% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_avx512/cnProc_gen_avx512 rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/generator_cnProc_avx512/cnProc_gen_avx512 index 8699a8d0a088a6d7e8bceb7a2fc505190d7b349e..de3b923c1f55f789bcf5a3598a8359a411c599c1 100755 GIT binary patch delta 2975 zcmcIlYfw~W7(U-Qdv?!5G!-NuNI1q)1Y`mMVCu}3z&hp;%(GX z16~9a8&Su?OQvpSPMT<5($TzRlR1rf`5|V_&@iJpk@UXb?oPvx{Kx)yzxVmx=e>OA zeCOFa*X5S$a%CKAI%H(X;U{|kwChH<%AYsi3AInWaBIoKy*VA;dU>zenmW=UIoF+U zIo;mT;aoSS#ksP)MJnlWauQ_l7&Z&acqA)=T3*M7!oVOqo9vw(bSjKphL@syu`4h% zI>vJQU5C_i!!!cl45zp1AN zHd|9CgsGDyNlJ&|nUQIm(36?AhZfm#mKKu*#HM+l*i>)gqL|d|{9;Mg)Z?_NS?>8L zhjB4AlArJfETk%F$GS*X3@Yp?j)E57y$ z6YUjQv^V+MEB^M6C~HGDRhy2jl#S$KH5y9Q%pPqsVP>Z37kZAoiGqqcuUu0}!iAM$l=J{DJ>ksqN=v7p~Uejgs9pf523aeM+6Rha;G zo{xu9J+eS4JdJ880yuawC8+{9`8BF+79fqg30MS3=Xacz$)TFz&v2qM^21S|M_DraSRNMFf|sX`Q6 zieN2YPZeHaWk{>!9-3zm+lZi^uOVO;ppkDRkRU)4uOW~qz(L+XU@#kiIbS*XHmaQ@ zrfcTS6dJ--V2d+SkekleV0nZnLft{f)TR<)C%KXqLz%niz?yav4&;v?a1o>CSUP}w zfn57=avRZ@6ULI;hDS6HPDS^HFt{{7`HlOS%`^iWDOCqO`c5p#dJGk?by>)Q`4S5m zk4Uac*OQ1EHAx_sei`1%O2~Mb`2D}Zh+O5=S7UYddYQ<+vrOMia7C?v&CB%N1dkjN zuyUDxgy3(N1iV@vdY@ol_P`e|4=so9vSL{x{E^i=G7-;$SE^@hkOL>jizKWhg(pJ4 z1&`TXh+JsMyG<}=VH_I>`3tSd7JPe}dn?xDO2{yW;0I?Q)HAV=R{VvCM0Se2XoeFD z<7^Lc0`0@U1i>C4{6MMg)h;Vbhe(%UYoYoT@8MirSsx%JAk^={ESJ^RgwI7=yv?$chRD zIdN<>)Z^A!IE^+Qe$TP8onX#2*mKDH+?+Vx$5WjXGxjgg`UT@Zi^}=scsaozA!)Yv0;O3>F zrzl>{QUz`;3oXY)*8O|t5*w9ep^cDM7(2wTlVL-meIHs6ye#w^j`Z+=h{`bzvH72f zdiNEMW2mBSi-d|syW?yFF+(e4LYdZ%^CblTg57irWV)>^6Uy9H85OhE9mgKRNw?M3 zj!~@)M9S4b3jJN_>ComjSPMiIS#9@7@>c#SSh~|+_%N}WU~-WaB`3GYuvL?4te+%A zs&9Z5k5Dg#&ykf27mAGDK6(61u+jpowZt;X@IrBfEg5~S{;nWYb|N@nM6s2{LI&Ct zC@Ci0+m6-+7to%8Hnh(mszm6XvxIbSQ3>f@Ly2LFCs{t~5t`OG!GDJ7Bvw1&S7eOdFxvevbFpFDLK)wV2qJl#^Nv5GH$wd}>{x7NS@1QoO!RCnZWpZP0IQT(b?#F0+VHHh7SUntT8qSu(Q?xT-=$=>q1&b&{H2?qr delta 2962 zcmcIkX-rgC6n^);c{A@)kq6Q+i-HQNGp>VH+-ezIafd`3m5AcTsvr#1iaLPS-3T1S ztu3xmG_~kxYg!kytyNNFJ&4m~0x*bNvK8D;um zvP)|I`T>;kaP}D7kvrHK=oIB-4c?JaN;D*lng-iOxxp|x2M#BPdP_#TxCn+!`8RlS z>hLaVi6lwM5T9mET92O0wEgsuP3P%hFl`Y*<3SNrzrlxMP&1dhC0SEXQ&2NC`Y6Zn zVc11}>Ob64SJ+|%8QenM zg4ukG=MDA?13-6Dy#^uEQ(>F@Y|xU)=)ePUa41Of?T*cUL;{9DLfRS z7e8h7U`=<(w~a71-OhT!(sWClg#VtFzZ-jUC3K`q@Pktj>a($t<~}7d)^?dcRXCS! zw_U*vw0Hgz1ZRNoEtNJ_W>{Dg{;OS{Yf zn3`!B9EJO8@2?Pf=bQfXi%NwuHB};$)GiYN?`1le8!n?wgBG;sz?$V?&tOcJL%wH# z+$=jA2|F=#5H6vOhKE@eRtm;!2mS|6v^6jr?IBo;wi1qKTWpW$c7A!A(-EWu{~~)3 z>Zx!q+ab5g5S(MSmD5YVJ~W7EB>~!VqM5;!(_6iU`zAwfj@i@klK4_Z^mM!=zElxC zc$GU?5>ZtCUlBbWFNrTz#6EaYI!qFaASO3X_etU`Aw(pJkd{H5DvMB<$6o(aIA?tL5Wr#p|ao8?M%8MD|*U2tJB7GlP2woQY#UnjDAfj@VO9cND zQSY(5@eIGp zNc9Y`dLz^e;3H&BgsTOPu0DDEP_U8$tPR9!WzgAewhcgE+u0-t7B^HwIEh{A5+f(SUMU(h`;t`s*ccT9cvq`K<;U{F( z11};i9EA1|%qeo%Dyic0gdmc)d6WDVT@mV!U|*4irNU>(YNbk$rH#C75xbk@0TqvP26$ELFkG5ExX*J>kl*uKUsEnFzK1- zr919fqw3YGSe89zc|Egl*(N$YZl5Eh65-3p>LJ@X`Q>Ay-L*eDqi*~7Eoonxw&`@n zBd7iPUw^7ZDo=m_(b{7S-<6}}+oXlJ!6zDms+KFlt$>1y=)6h!Y1MBfEMo<$Si?Ft za19d?6M~6^iHwPYiHeDaiGd{%OA?k8ENNIWuqK(TxKvdH`!DGV;r4$UDYyL(@=Dd} zA^h{qP0#F(dZyEc$-%8&m4u~d1$0ggJUU}$9d$>xJ4W3r=#V`qZn|TqDT8${5xIm* z68$i0C2C6%vihie_EJQD|BcRGNfmT^;{c_8x%6%@FfTg;bcUYy{$rQ$S>*_IE=JC{ zTsfk44jmpM_nSL5hvm}nx@S4);08g92E7|^9Q3V$>6R+27RF28?hMVQDz?DVBG<2n zW#ZD@jfeBCKY!k9KX?76SGy&Aj)T^nwW#?5%4T(~kV86ydER4G6O z&~ZI$Y>n*BplyTn$7Z>MFYxyYY7d9d==QMVUbo%JMccfw47e6#kG{|hcDZ~}!QXMG zl2}2JL*R=nvxp)Q|9ESEL=jL4J|bKsf*AyQeE zhBQY*TAGGYo6@*NfnG8twCqcatc0=H?+!+;37s0#R`?gl6umzR|N0#HbxnW482-@j zyXF{;N674Suh4}xMt@o3E6YY5bV*r6@aNcchAtZQk)|MY{B3N8DZwosk#}C3sMdM3 z>zha(DXMp->-sEF4v~zGPu-Y)A0DO^42CJtI{E#d-h~lk+oed7w!%f@tIinNrrD$N zxG0u zF{ykfwqG_bOH?L%fO`*RsX`7cD{nJj*<*!oDRDI0WZFVgErBu zwrf!XRmnxet1d!=c!sk~=OYk_9uV>kNy7MSiY@dCi4`XMTi>yOE;yYGFHDCD{n8uV z{@`ewdg^r3aXK(+2Z0K~IG)|yFs%VA^`$eIfC|y+r)Pb!Tnbz+!vRt3}L^s}P#Ot&rgbu$zU=yRv zOl@LMtk@N~C@1w$ETw4~ofhVmY|%)WQThsAkT)BIC?)ap3H&7!rfYXH7%!A;O7p#` z1W*?R0g^#YCv60>Tyy}_$PxlxP(d)S(Ug;Fk`_{U?kOTvnBY}JC+12HZ7qM^i%$xb zIZ^+p_O+a5VD|~_EpF;okRO@KkDI$kZte`-%*WZxarOdfq!Cw&y4W?b8OEW_L{@Z)_*x$z%DB#cxQ;Zv*+Z-b)$*F(j9oGdQ)LdFLm%`r?J3GxoW%$&IA3C_{m-_JXA?-^#1 zOn-7Qi)k2Z8z4)~3$oPMj>8OM5o3n2B%(z?7Td{<+84E{wg6}`lm*4HB1>3P3~Xrr zvV0^XrWRR=uIvN72(6%kxeO>3EdHl~HmR7PO)3;Q3=ddZ%!F#PQKX!AJ4~Uh~oOA|!pKjkN@Xq&M{zfTY;Y8ha&57U91Z-DQhjSPs`{ zNu<$ir*2)^K8MM)r!}ud+vji*{!)sGzm!7ZFJ)u+OHbWZ;;}Q;$F?`68Bh4A@0|_9_@fbMmq6|;;+AD06?{v08lLy z08}>y01XZR3%JIoCP5A3(Xa98JH>zLox<@S$A1q6|EX)@znyM_*75?t+J*pNtyyaU z2Al_gbXChkOLTWJ4g%v>R|JAdmCV54x|R5VFujrpC|swGfZNn60v^_{!bh+k%FKY7 zS}|d!Rw$UMrN1s7@N_eRabr3z<%k)ZsqE0KU_K~X<50AKP*h7oJ+(&jE6v=+GqBud1*P}D0KW^-!qtpqeN^Hu?3hEO;7(}$9Wob zr$lJoss>b7EGu3!3XH?_yv6*T-mNTmH_}EM}9?KckFg_N% zbE_8J#}c@dh#Z&}5SZ#o7zhmHV@Ia7og&kWUg6M`L(`o@(|n7h z`UBo1C%G3%NiFsDS0(iJt0F9T5R%lIq}FN@f1T7{p7hr9yc6Q-yB7d;*jpX4MBmN8 zs$^hQ2dD=qNCWhvO8|m20~$~!mGyz`~~a=u|yM8Dif^Z@ye5!vmQQAW3L$DBLnJ9o@;KE7n! z+m=!Ij%le-^bX~?!jBW_h6nZHQEm#o&c(xd zEez+C(IjqNc^t6~Q05l)aa!0PHI7*HHE1#XjGxGO&wR`;97&8mJV76p&?PZ=o+I>w zUXA>qhcPdBc7jI}%i--MMH5>!kl0iHCLHO+`=Ms}jB{Xj87EvRBH14=DCM2|=L$^oX5 zqI~fHUkjP1i3j-N0lu<@!co=ZLRG~8HIF>NmmCUTu`pz5IKY>zv7_Kb|INoBbXGiX zSx_Tu^ECac)*u;h6{F}?v=AEc0AD$vQBr^}9@}dn^EC0;UOcu}woo`U;?U>^itV)x zbhJ|7hr^UZeAxCC@Qj1PmAsJ>BriEo#y~4!s4Dkx*LNu&fUo=!hN_Dev4V$XYZ$Nf+e)xz5 zAd&|V%K;*j0*LuMN0B>U;@eJSuhiYo7^Yk6 za2!eS({9fHc;C4;>A4m6Sx5HyFQTXujh+8OG(}fMC`Uv^()sx>+enT2Ww$Fdem!~p z_EY`f4|MPcfIcLg{Nm*ZZ~lDKsD};-@(u_RKAkn{=vnzMYtZX%VeAd6CgUvqTmHMpxHJpK7uxzVVggAsc6GkW%4$oE-*ybltM6PczZj91F7d?9k#2Nvucj(#ehmUVgU%xwR|Mubio4Z4L;!4MI z2s*f=Vozc5F0s00-Zg4zz;)egPFZLv-Nuq3t6<2rm1@ zXIH0<|8Cv9K*Ce1Z3o}GU;4=HOum3gb9!bKGOL&05o=*L+(3FpWN;=^G=Fwh6JTtA g5c5N}c;bmCo_OMkC!ToXiKmS8f2uNB=>W(80Gk$mzW@LL literal 0 HcmV?d00001 diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z104_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z104_R13_AVX2.c new file mode 100644 index 0000000000..5c9e0ba2c8 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z104_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z104_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z10_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z10_R13_AVX2.c new file mode 100644 index 0000000000..17386fca34 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z10_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z10_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z112_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z112_R13_AVX2.c new file mode 100644 index 0000000000..72f269a3fc --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z112_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z112_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z11_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z11_R13_AVX2.c new file mode 100644 index 0000000000..59f30be553 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z11_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z11_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z120_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z120_R13_AVX2.c new file mode 100644 index 0000000000..400c04c430 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z120_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z120_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z128_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z128_R13_AVX2.c new file mode 100644 index 0000000000..6496593bd3 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z128_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z128_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z12_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z12_R13_AVX2.c new file mode 100644 index 0000000000..0614cf505b --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z12_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z12_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z13_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z13_R13_AVX2.c new file mode 100644 index 0000000000..785d554559 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z13_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z13_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z144_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z144_R13_AVX2.c new file mode 100644 index 0000000000..d91cb1b44e --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z144_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z144_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z14_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z14_R13_AVX2.c new file mode 100644 index 0000000000..07ba538e90 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z14_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z14_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z15_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z15_R13_AVX2.c new file mode 100644 index 0000000000..78e3f8dc35 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z15_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z15_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z160_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z160_R13_AVX2.c new file mode 100644 index 0000000000..cc2d9fafd7 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z160_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z160_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z16_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z16_R13_AVX2.c new file mode 100644 index 0000000000..29ffb5058b --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z16_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z16_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z176_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z176_R13_AVX2.c new file mode 100644 index 0000000000..e44d7cac94 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z176_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z176_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<17;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<17;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<17;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<17;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<17;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<17;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<17;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<17;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<17;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<17;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<17;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<17;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<17;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<17;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<17;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<17;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<17;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<17;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<17;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z18_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z18_R13_AVX2.c new file mode 100644 index 0000000000..765ffaf0b1 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z18_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z18_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z192_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z192_R13_AVX2.c new file mode 100644 index 0000000000..436effce12 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z192_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z192_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z208_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z208_R13_AVX2.c new file mode 100644 index 0000000000..a043cee84d --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z208_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z208_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<26;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z20_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z20_R13_AVX2.c new file mode 100644 index 0000000000..0acb046870 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z20_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z20_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z224_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z224_R13_AVX2.c new file mode 100644 index 0000000000..941f05c829 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z224_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z224_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<21;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<21;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<21;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<21;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<21;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<21;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<21;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<21;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<21;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<21;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<21;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<21;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<21;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<21;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<21;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<21;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<21;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<21;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<21;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<28;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z22_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z22_R13_AVX2.c new file mode 100644 index 0000000000..3bedc1da39 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z22_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z22_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z240_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z240_R13_AVX2.c new file mode 100644 index 0000000000..3e1fb14b16 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z240_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z240_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<23;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<23;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<23;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<23;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<23;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<23;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<23;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<23;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<23;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<23;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<23;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<23;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<23;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<23;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<23;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<23;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<23;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<23;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<23;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z24_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z24_R13_AVX2.c new file mode 100644 index 0000000000..a1a9e7c746 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z24_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z24_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z256_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z256_R13_AVX2.c new file mode 100644 index 0000000000..95b6662869 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z256_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z256_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<32;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z26_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z26_R13_AVX2.c new file mode 100644 index 0000000000..d67252e70d --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z26_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z26_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z288_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z288_R13_AVX2.c new file mode 100644 index 0000000000..88b1453acd --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z288_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z288_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<27;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<27;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<27;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<27;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<27;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<27;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<27;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<27;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<27;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<27;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<27;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<27;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<27;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<27;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<27;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<27;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<27;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<27;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<27;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z28_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z28_R13_AVX2.c new file mode 100644 index 0000000000..dab5d50a75 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z28_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z28_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z2_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z2_R13_AVX2.c new file mode 100644 index 0000000000..b5b4329183 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z2_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z2_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z30_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z30_R13_AVX2.c new file mode 100644 index 0000000000..82b7429182 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z30_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z30_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z320_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z320_R13_AVX2.c new file mode 100644 index 0000000000..c1243fe104 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z320_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z320_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<30;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<40;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z32_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z32_R13_AVX2.c new file mode 100644 index 0000000000..6fbf2f7060 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z32_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z32_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z352_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z352_R13_AVX2.c new file mode 100644 index 0000000000..54bf723732 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z352_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z352_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<33;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<33;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<33;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<33;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<33;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<33;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<33;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<33;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<33;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<33;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<33;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<33;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<33;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<33;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<33;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<33;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<33;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<33;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<33;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<44;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z36_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z36_R13_AVX2.c new file mode 100644 index 0000000000..449662b84f --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z36_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z36_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z384_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z384_R13_AVX2.c new file mode 100644 index 0000000000..c4fa11327f --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z384_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z384_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<36;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<48;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z3_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z3_R13_AVX2.c new file mode 100644 index 0000000000..cd0ecff86e --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z3_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z3_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z40_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z40_R13_AVX2.c new file mode 100644 index 0000000000..b0a1d96998 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z40_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z40_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z44_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z44_R13_AVX2.c new file mode 100644 index 0000000000..094471b418 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z44_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z44_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z48_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z48_R13_AVX2.c new file mode 100644 index 0000000000..b5384c2cd2 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z48_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z48_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z4_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z4_R13_AVX2.c new file mode 100644 index 0000000000..1c664a4a07 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z4_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z4_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z52_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z52_R13_AVX2.c new file mode 100644 index 0000000000..ebea97e7a4 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z52_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z52_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z56_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z56_R13_AVX2.c new file mode 100644 index 0000000000..c24d31dc62 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z56_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z56_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z5_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z5_R13_AVX2.c new file mode 100644 index 0000000000..3d0523df04 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z5_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z5_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z60_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z60_R13_AVX2.c new file mode 100644 index 0000000000..b69c8bfb2c --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z60_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z60_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z64_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z64_R13_AVX2.c new file mode 100644 index 0000000000..1c51ee482f --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z64_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z64_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z6_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z6_R13_AVX2.c new file mode 100644 index 0000000000..bbe6ddcb3e --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z6_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z6_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z72_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z72_R13_AVX2.c new file mode 100644 index 0000000000..f74cc89ad7 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z72_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z72_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z7_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z7_R13_AVX2.c new file mode 100644 index 0000000000..94f64d1fad --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z7_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z7_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z80_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z80_R13_AVX2.c new file mode 100644 index 0000000000..931abd13c8 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z80_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z80_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z88_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z88_R13_AVX2.c new file mode 100644 index 0000000000..4b88d79461 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z88_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z88_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z8_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z8_R13_AVX2.c new file mode 100644 index 0000000000..83032f55a1 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z8_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z8_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z96_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z96_R13_AVX2.c new file mode 100644 index 0000000000..649308b2a1 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z96_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z96_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z9_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z9_R13_AVX2.c new file mode 100644 index 0000000000..e16be52cea --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG1_Z9_R13_AVX2.c @@ -0,0 +1,978 @@ +#include +#include +void nrLDPC_bnProc_BG1_Z9_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [16128]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [16128]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [17664]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [17664]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [19584]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [19584]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [24192]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [24192]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [34944]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [34944]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [44160]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [44160]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [47616]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [47616]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [62976]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [62976]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[360]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[360 + i]); + p_res++; + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [75648]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [75648]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[384]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[384 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[432]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[432 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[480]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[480 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[528]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[528 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [94080]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [94080]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [99072]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [99072]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [109824]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [109824]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[276]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[276 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[288]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[288 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[300]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[300 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[312]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[312 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[324]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[324 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[336]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[336 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[348]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[348 + i]); + p_res++; + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z104_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z104_R15_AVX2.c new file mode 100644 index 0000000000..6de8a73cfe --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z104_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z104_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z10_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z10_R15_AVX2.c new file mode 100644 index 0000000000..da7eecd7c9 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z10_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z10_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z112_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z112_R15_AVX2.c new file mode 100644 index 0000000000..3613096240 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z112_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z112_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z11_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z11_R15_AVX2.c new file mode 100644 index 0000000000..ce583e8a49 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z11_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z11_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z120_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z120_R15_AVX2.c new file mode 100644 index 0000000000..9567913d4c --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z120_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z120_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z128_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z128_R15_AVX2.c new file mode 100644 index 0000000000..3dcd56e4b2 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z128_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z128_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z12_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z12_R15_AVX2.c new file mode 100644 index 0000000000..a1e7eef92d --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z12_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z12_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z13_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z13_R15_AVX2.c new file mode 100644 index 0000000000..c604b9c9fc --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z13_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z13_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z144_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z144_R15_AVX2.c new file mode 100644 index 0000000000..3a6d5fad9b --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z144_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z144_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z14_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z14_R15_AVX2.c new file mode 100644 index 0000000000..0a68dcc192 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z14_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z14_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z15_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z15_R15_AVX2.c new file mode 100644 index 0000000000..5e1b4e5247 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z15_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z15_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z160_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z160_R15_AVX2.c new file mode 100644 index 0000000000..301752c898 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z160_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z160_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z16_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z16_R15_AVX2.c new file mode 100644 index 0000000000..2ff4596dec --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z16_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z16_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z176_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z176_R15_AVX2.c new file mode 100644 index 0000000000..25d44d65dd --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z176_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z176_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z18_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z18_R15_AVX2.c new file mode 100644 index 0000000000..d035375329 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z18_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z18_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z192_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z192_R15_AVX2.c new file mode 100644 index 0000000000..fe808f0262 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z192_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z192_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z208_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z208_R15_AVX2.c new file mode 100644 index 0000000000..b80ad2550c --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z208_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z208_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<13;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z20_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z20_R15_AVX2.c new file mode 100644 index 0000000000..bea168af3c --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z20_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z20_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z224_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z224_R15_AVX2.c new file mode 100644 index 0000000000..6a897f6a58 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z224_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z224_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<14;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<7;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z22_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z22_R15_AVX2.c new file mode 100644 index 0000000000..1686f075cd --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z22_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z22_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z240_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z240_R15_AVX2.c new file mode 100644 index 0000000000..ff3f02c22c --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z240_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z240_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<15;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z24_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z24_R15_AVX2.c new file mode 100644 index 0000000000..3a824bf742 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z24_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z24_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z256_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z256_R15_AVX2.c new file mode 100644 index 0000000000..1d251bfd7e --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z256_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z256_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<16;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<8;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z26_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z26_R15_AVX2.c new file mode 100644 index 0000000000..9c01cb69a0 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z26_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z26_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z288_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z288_R15_AVX2.c new file mode 100644 index 0000000000..c48b6023d6 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z288_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z288_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<18;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<9;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z28_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z28_R15_AVX2.c new file mode 100644 index 0000000000..4b02344ea4 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z28_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z28_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z2_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z2_R15_AVX2.c new file mode 100644 index 0000000000..81694205f4 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z2_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z2_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z30_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z30_R15_AVX2.c new file mode 100644 index 0000000000..1ca19efbea --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z30_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z30_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z320_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z320_R15_AVX2.c new file mode 100644 index 0000000000..cb56abe439 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z320_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z320_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<20;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<10;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z32_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z32_R15_AVX2.c new file mode 100644 index 0000000000..d03e2e943e --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z32_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z32_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z352_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z352_R15_AVX2.c new file mode 100644 index 0000000000..6be4e10dd8 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z352_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z352_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<22;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<11;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z36_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z36_R15_AVX2.c new file mode 100644 index 0000000000..3e447f3a1a --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z36_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z36_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z384_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z384_R15_AVX2.c new file mode 100644 index 0000000000..2ac44f6c53 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z384_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z384_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<24;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<12;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z3_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z3_R15_AVX2.c new file mode 100644 index 0000000000..3b645790d4 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z3_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z3_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z40_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z40_R15_AVX2.c new file mode 100644 index 0000000000..a9eb5dbb00 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z40_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z40_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z44_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z44_R15_AVX2.c new file mode 100644 index 0000000000..a6613ef66c --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z44_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z44_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z48_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z48_R15_AVX2.c new file mode 100644 index 0000000000..d2a7c80bb0 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z48_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z48_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z4_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z4_R15_AVX2.c new file mode 100644 index 0000000000..ae4f4d922f --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z4_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z4_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z52_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z52_R15_AVX2.c new file mode 100644 index 0000000000..3efa774165 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z52_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z52_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z56_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z56_R15_AVX2.c new file mode 100644 index 0000000000..f61d8ea7d7 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z56_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z56_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z5_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z5_R15_AVX2.c new file mode 100644 index 0000000000..6528758122 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z5_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z5_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z60_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z60_R15_AVX2.c new file mode 100644 index 0000000000..d7a3be2173 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z60_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z60_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z64_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z64_R15_AVX2.c new file mode 100644 index 0000000000..58457add44 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z64_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z64_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<4;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<2;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z6_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z6_R15_AVX2.c new file mode 100644 index 0000000000..f9c2093489 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z6_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z6_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z72_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z72_R15_AVX2.c new file mode 100644 index 0000000000..9d14029acc --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z72_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z72_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z7_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z7_R15_AVX2.c new file mode 100644 index 0000000000..188b6a94dd --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z7_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z7_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z80_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z80_R15_AVX2.c new file mode 100644 index 0000000000..ac2c167b9a --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z80_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z80_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<5;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z88_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z88_R15_AVX2.c new file mode 100644 index 0000000000..4d5ec0740c --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z88_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z88_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z8_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z8_R15_AVX2.c new file mode 100644 index 0000000000..f4b84e4509 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z8_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z8_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z96_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z96_R15_AVX2.c new file mode 100644 index 0000000000..83a4a54c13 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z96_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z96_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<6;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<3;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z9_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z9_R15_AVX2.c new file mode 100644 index 0000000000..ed5464778a --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProc/nrLDPC_bnProc_BG2_Z9_R15_AVX2.c @@ -0,0 +1,992 @@ +#include +#include +void nrLDPC_bnProc_BG2_Z9_R15_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes ) { + __m256i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m256i* p_llrRes; + __m256i* p_res; +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [14592]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [14592]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [18432]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [18432]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [20736]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [20736]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [23424]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [23424]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [26496]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [26496]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [33408]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [33408]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [37248]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [37248]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [41856]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [41856]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [46848]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [46848]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [52224]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [52224]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [58368]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [58368]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} +// Process group with 23 CNs + p_bnProcBuf = (__m256i*) &bnProcBuf [66816]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [66816]; + p_res = &p_bnProcBufRes[0]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[0 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[12]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[12 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[24]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[24 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[36]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[36 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[48]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[48 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[60]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[60 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[72]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[72 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[84]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[84 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[96]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[96 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[108]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[108 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[120]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[120 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[132]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[132 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[144]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[144 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[156]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[156 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[168]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[168 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[180]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[180 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[192]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[192 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[204]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[204 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[216]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[216 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[228]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[228 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[240]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[240 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[252]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[252 + i]); + p_res++; + p_llrRes++; +} + p_res = &p_bnProcBufRes[264]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0;i<1;i++) { + *p_res = _mm256_subs_epi8(*p_llrRes, p_bnProcBuf[264 + i]); + p_res++; + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z104_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z104_R13_AVX2.c new file mode 100644 index 0000000000..94b217187d --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z104_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z104_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<137;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<13;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<13;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<13;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z10_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z10_R13_AVX2.c new file mode 100644 index 0000000000..160bce3117 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z10_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z10_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<14;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z112_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z112_R13_AVX2.c new file mode 100644 index 0000000000..0e753bfab3 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z112_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z112_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<147;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<14;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<14;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<14;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z11_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z11_R13_AVX2.c new file mode 100644 index 0000000000..3a16eaa82f --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z11_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z11_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<15;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z120_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z120_R13_AVX2.c new file mode 100644 index 0000000000..673af9a9d7 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z120_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z120_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<158;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<15;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<15;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<15;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z128_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z128_R13_AVX2.c new file mode 100644 index 0000000000..9029ec4945 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z128_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z128_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<168;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<16;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<16;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<16;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z12_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z12_R13_AVX2.c new file mode 100644 index 0000000000..eb63f40810 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z12_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z12_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<16;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z13_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z13_R13_AVX2.c new file mode 100644 index 0000000000..03b80c28e3 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z13_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z13_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<18;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z144_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z144_R13_AVX2.c new file mode 100644 index 0000000000..1e0e1bb9b4 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z144_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z144_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<189;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<18;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<14;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<18;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<14;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<18;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z14_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z14_R13_AVX2.c new file mode 100644 index 0000000000..f8d5ba2422 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z14_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z14_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<19;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z15_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z15_R13_AVX2.c new file mode 100644 index 0000000000..c3bf9cd8c4 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z15_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z15_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<20;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z160_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z160_R13_AVX2.c new file mode 100644 index 0000000000..54aa60410d --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z160_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z160_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<210;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<20;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<15;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<20;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<15;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<20;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z16_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z16_R13_AVX2.c new file mode 100644 index 0000000000..dbd57a29a2 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z16_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z16_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<21;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z176_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z176_R13_AVX2.c new file mode 100644 index 0000000000..b33f7eff95 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z176_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z176_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<231;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<22;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<17;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<22;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<17;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<22;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z18_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z18_R13_AVX2.c new file mode 100644 index 0000000000..bfacf24f9e --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z18_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z18_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<24;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z192_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z192_R13_AVX2.c new file mode 100644 index 0000000000..cb5e28d03b --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z192_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z192_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<252;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<24;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<18;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<24;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<18;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<24;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z208_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z208_R13_AVX2.c new file mode 100644 index 0000000000..26206a90ef --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z208_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z208_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<273;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<13;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<26;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<20;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<26;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<20;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<26;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z20_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z20_R13_AVX2.c new file mode 100644 index 0000000000..47a80af761 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z20_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z20_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<27;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z224_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z224_R13_AVX2.c new file mode 100644 index 0000000000..429e77bb46 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z224_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z224_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<294;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<14;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<28;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<21;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<28;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<21;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<28;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z22_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z22_R13_AVX2.c new file mode 100644 index 0000000000..5114d701ea --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z22_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z22_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<29;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z240_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z240_R13_AVX2.c new file mode 100644 index 0000000000..0075be8dec --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z240_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z240_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<315;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<15;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<30;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<23;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<30;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<23;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<30;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z24_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z24_R13_AVX2.c new file mode 100644 index 0000000000..2a10721f55 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z24_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z24_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<32;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z256_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z256_R13_AVX2.c new file mode 100644 index 0000000000..32f7cc2f18 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z256_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z256_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<336;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<16;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<32;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<24;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<32;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<24;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<32;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z26_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z26_R13_AVX2.c new file mode 100644 index 0000000000..ec50dbc7c6 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z26_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z26_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<35;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z288_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z288_R13_AVX2.c new file mode 100644 index 0000000000..31c6264a07 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z288_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z288_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<378;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<18;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<36;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<27;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<36;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<27;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<36;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z28_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z28_R13_AVX2.c new file mode 100644 index 0000000000..5f261e18df --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z28_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z28_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<37;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z2_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z2_R13_AVX2.c new file mode 100644 index 0000000000..e77a0c287f --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z2_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z2_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<3;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z30_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z30_R13_AVX2.c new file mode 100644 index 0000000000..9c40d68946 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z30_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z30_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<40;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z320_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z320_R13_AVX2.c new file mode 100644 index 0000000000..ad6d124bae --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z320_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z320_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<420;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<20;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<40;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<30;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<40;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<30;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<40;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z32_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z32_R13_AVX2.c new file mode 100644 index 0000000000..57401cbf41 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z32_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z32_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<42;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z352_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z352_R13_AVX2.c new file mode 100644 index 0000000000..901bc03cd9 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z352_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z352_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<462;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<22;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<44;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<33;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<44;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<33;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<44;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z36_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z36_R13_AVX2.c new file mode 100644 index 0000000000..4799b8efbf --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z36_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z36_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<48;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z384_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z384_R13_AVX2.c new file mode 100644 index 0000000000..bccdf09c1e --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z384_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z384_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<504;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<24;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<48;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<36;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<48;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<36;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<48;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z3_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z3_R13_AVX2.c new file mode 100644 index 0000000000..a458247cf1 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z3_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z3_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<4;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z40_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z40_R13_AVX2.c new file mode 100644 index 0000000000..79d4f4ae71 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z40_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z40_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<53;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z44_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z44_R13_AVX2.c new file mode 100644 index 0000000000..5e91ecb0c1 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z44_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z44_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<58;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z48_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z48_R13_AVX2.c new file mode 100644 index 0000000000..7e7af0c1ce --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z48_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z48_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<63;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z4_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z4_R13_AVX2.c new file mode 100644 index 0000000000..06e7bc8467 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z4_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z4_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<6;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z52_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z52_R13_AVX2.c new file mode 100644 index 0000000000..6954acb650 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z52_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z52_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<69;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z56_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z56_R13_AVX2.c new file mode 100644 index 0000000000..dd4d169cb2 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z56_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z56_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<74;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z5_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z5_R13_AVX2.c new file mode 100644 index 0000000000..c3943c0003 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z5_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z5_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<7;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z60_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z60_R13_AVX2.c new file mode 100644 index 0000000000..cd4c7ff1b9 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z60_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z60_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<79;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z64_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z64_R13_AVX2.c new file mode 100644 index 0000000000..b9c661f6ca --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z64_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z64_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<84;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z6_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z6_R13_AVX2.c new file mode 100644 index 0000000000..c223a8b5b1 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z6_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z6_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<8;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z72_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z72_R13_AVX2.c new file mode 100644 index 0000000000..0711e1b370 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z72_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z72_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<95;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z7_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z7_R13_AVX2.c new file mode 100644 index 0000000000..85384d8d39 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z7_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z7_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<10;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z80_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z80_R13_AVX2.c new file mode 100644 index 0000000000..e7e4c7b6f4 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z80_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z80_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<105;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z88_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z88_R13_AVX2.c new file mode 100644 index 0000000000..4d694f1874 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z88_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z88_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<116;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z8_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z8_R13_AVX2.c new file mode 100644 index 0000000000..548b9ab4aa --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z8_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z8_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<11;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z96_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z96_R13_AVX2.c new file mode 100644 index 0000000000..8db0776e95 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z96_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z96_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<126;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z9_R13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z9_R13_AVX2.c new file mode 100644 index 0000000000..44b8a15b39 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG1_Z9_R13_AVX2.c @@ -0,0 +1,749 @@ +#include +#include +void nrLDPC_bnProcPc_BG1_Z9_R13_AVX2(int8_t* bnProcBuf,int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<12;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [16128]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [17664]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [19584]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16896]; + p_llrRes = (__m256i*) &llrRes [16896]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [24192]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [34944]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [44160]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20352]; + p_llrRes = (__m256i*) &llrRes [20352]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [47616]; + p_llrProcBuf = (__m128i*) &llrProcBuf [20736]; + p_llrRes = (__m256i*) &llrRes [20736]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [62976]; + p_llrProcBuf = (__m128i*) &llrProcBuf [22272]; + p_llrRes = (__m256i*) &llrRes [22272]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[720 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [75648]; + p_llrProcBuf = (__m128i*) &llrProcBuf [23424]; + p_llrRes = (__m256i*) &llrRes [23424]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[768 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[864 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[960 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[1056 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [94080]; + p_llrProcBuf = (__m128i*) &llrProcBuf [24960]; + p_llrRes = (__m256i*) &llrRes [24960]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs +// Process group with 15 CNs +// Process group with 16 CNs +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs +// Process group with <23 CNs +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [99072]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25344]; + p_llrRes = (__m256i*) &llrRes [25344]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 29 CNs +// Process group with 30 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [109824]; + p_llrProcBuf = (__m128i*) &llrProcBuf [25728]; + p_llrRes = (__m256i*) &llrRes [25728]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[552 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[576 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[600 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[624 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[648 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[672 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[696 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z104_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z104_R15_AVX2.c new file mode 100644 index 0000000000..f0ed3c3cd1 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z104_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z104_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<124;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z10_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z10_R15_AVX2.c new file mode 100644 index 0000000000..06529a76d5 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z10_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z10_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<12;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z112_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z112_R15_AVX2.c new file mode 100644 index 0000000000..d32d9f5a5a --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z112_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z112_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<133;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z11_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z11_R15_AVX2.c new file mode 100644 index 0000000000..f4abd64e20 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z11_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z11_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<14;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z120_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z120_R15_AVX2.c new file mode 100644 index 0000000000..192f387978 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z120_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z120_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<143;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z128_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z128_R15_AVX2.c new file mode 100644 index 0000000000..7c87845b5b --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z128_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z128_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<152;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z12_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z12_R15_AVX2.c new file mode 100644 index 0000000000..b640cc9b50 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z12_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z12_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<15;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z13_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z13_R15_AVX2.c new file mode 100644 index 0000000000..fc400c6368 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z13_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z13_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<16;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z144_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z144_R15_AVX2.c new file mode 100644 index 0000000000..8f10c6f9a6 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z144_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z144_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<171;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z14_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z14_R15_AVX2.c new file mode 100644 index 0000000000..3f6be2d8b3 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z14_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z14_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<17;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z15_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z15_R15_AVX2.c new file mode 100644 index 0000000000..18433a0bb9 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z15_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z15_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<18;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z160_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z160_R15_AVX2.c new file mode 100644 index 0000000000..a707e979a3 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z160_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z160_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<190;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z16_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z16_R15_AVX2.c new file mode 100644 index 0000000000..2db176ef99 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z16_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z16_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<19;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z176_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z176_R15_AVX2.c new file mode 100644 index 0000000000..0a4986e855 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z176_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z176_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<209;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z18_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z18_R15_AVX2.c new file mode 100644 index 0000000000..73ec5b7694 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z18_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z18_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<22;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z192_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z192_R15_AVX2.c new file mode 100644 index 0000000000..57c3a14331 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z192_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z192_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<228;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z208_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z208_R15_AVX2.c new file mode 100644 index 0000000000..df3810a159 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z208_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z208_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<247;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<13;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<13;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z20_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z20_R15_AVX2.c new file mode 100644 index 0000000000..ccabb48171 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z20_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z20_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<24;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z224_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z224_R15_AVX2.c new file mode 100644 index 0000000000..3863cc0b78 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z224_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z224_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<266;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<14;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<14;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<7;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z22_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z22_R15_AVX2.c new file mode 100644 index 0000000000..e63c5fd552 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z22_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z22_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<27;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z240_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z240_R15_AVX2.c new file mode 100644 index 0000000000..6502335168 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z240_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z240_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<285;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<15;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<15;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z24_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z24_R15_AVX2.c new file mode 100644 index 0000000000..bf727cb7da --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z24_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z24_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<29;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z256_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z256_R15_AVX2.c new file mode 100644 index 0000000000..21e3b405ee --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z256_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z256_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<304;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<16;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<16;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<8;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z26_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z26_R15_AVX2.c new file mode 100644 index 0000000000..aada1582fb --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z26_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z26_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<31;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z288_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z288_R15_AVX2.c new file mode 100644 index 0000000000..dbd644f48b --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z288_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z288_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<342;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<18;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<18;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<9;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z28_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z28_R15_AVX2.c new file mode 100644 index 0000000000..465742e608 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z28_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z28_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<34;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z2_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z2_R15_AVX2.c new file mode 100644 index 0000000000..e93cdfcf11 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z2_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z2_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<3;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z30_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z30_R15_AVX2.c new file mode 100644 index 0000000000..8d060b7c79 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z30_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z30_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<36;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z320_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z320_R15_AVX2.c new file mode 100644 index 0000000000..92268f3d53 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z320_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z320_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<380;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<20;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<20;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<10;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z32_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z32_R15_AVX2.c new file mode 100644 index 0000000000..bfc4c0b52b --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z32_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z32_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<38;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z352_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z352_R15_AVX2.c new file mode 100644 index 0000000000..2c6cc7b6b0 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z352_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z352_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<418;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<22;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<22;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<11;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z36_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z36_R15_AVX2.c new file mode 100644 index 0000000000..ed4a0100a9 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z36_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z36_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<43;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z384_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z384_R15_AVX2.c new file mode 100644 index 0000000000..a5c0f02b5b --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z384_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z384_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<456;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<24;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<24;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<12;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z3_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z3_R15_AVX2.c new file mode 100644 index 0000000000..43e8bcd7de --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z3_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z3_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<4;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z40_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z40_R15_AVX2.c new file mode 100644 index 0000000000..24438b13cd --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z40_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z40_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<48;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z44_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z44_R15_AVX2.c new file mode 100644 index 0000000000..0f324af960 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z44_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z44_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<53;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z48_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z48_R15_AVX2.c new file mode 100644 index 0000000000..9e88e7b0ed --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z48_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z48_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<57;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z4_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z4_R15_AVX2.c new file mode 100644 index 0000000000..12597e8f2f --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z4_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z4_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<5;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z52_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z52_R15_AVX2.c new file mode 100644 index 0000000000..6b6566f36e --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z52_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z52_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<62;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z56_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z56_R15_AVX2.c new file mode 100644 index 0000000000..b1cce64577 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z56_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z56_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<67;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z5_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z5_R15_AVX2.c new file mode 100644 index 0000000000..5991558809 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z5_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z5_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<6;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z60_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z60_R15_AVX2.c new file mode 100644 index 0000000000..9c83e7d431 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z60_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z60_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<72;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z64_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z64_R15_AVX2.c new file mode 100644 index 0000000000..9dd53e1642 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z64_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z64_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<76;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<4;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<2;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z6_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z6_R15_AVX2.c new file mode 100644 index 0000000000..b7e769a154 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z6_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z6_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<8;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z72_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z72_R15_AVX2.c new file mode 100644 index 0000000000..749b21d603 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z72_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z72_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<86;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z7_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z7_R15_AVX2.c new file mode 100644 index 0000000000..ba4a638274 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z7_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z7_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<9;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z80_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z80_R15_AVX2.c new file mode 100644 index 0000000000..b60d9c6ad4 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z80_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z80_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<95;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<5;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z88_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z88_R15_AVX2.c new file mode 100644 index 0000000000..607d88744c --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z88_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z88_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<105;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z8_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z8_R15_AVX2.c new file mode 100644 index 0000000000..0aa77ce254 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z8_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z8_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<10;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z96_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z96_R15_AVX2.c new file mode 100644 index 0000000000..4239544706 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z96_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z96_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<114;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<6;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<3;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z9_R15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z9_R15_AVX2.c new file mode 100644 index 0000000000..5c085b51c2 --- /dev/null +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/bnProcPc/nrLDPC_bnProcPc_BG2_Z9_R15_AVX2.c @@ -0,0 +1,757 @@ +#include +#include +void nrLDPC_bnProcPc_BG2_Z9_R15_AVX2(int8_t* bnProcBuf, int8_t* bnProcBufRes, int8_t* llrRes , int8_t* llrProcBuf ) { + __m256i ymm0, ymm1, ymmRes0, ymmRes1; + __m128i* p_bnProcBuf; + __m256i* p_bnProcBufRes; + __m128i* p_llrProcBuf; + __m256i* p_llrProcBuf256; + __m256i* p_llrRes; +// Process group with 1 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [0]; + p_bnProcBufRes = (__m256i*) &bnProcBufRes [0]; + p_llrProcBuf = (__m128i*) &llrProcBuf [0]; + p_llrProcBuf256 = (__m256i*) &llrProcBuf [0]; + p_llrRes = (__m256i*) &llrRes [0]; + for (int i=0,j=0;i<11;i++,j+=2) { + p_bnProcBufRes[i] = p_llrProcBuf256[i]; + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j+1]); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j+1]); + ymmRes1 = _mm256_adds_epi16(ymm0, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 2 CNs +// Process group with 3 CNs +// Process group with 4 CNs +// Process group with 5 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [14592]; + p_llrProcBuf = (__m128i*) &llrProcBuf [14592]; + p_llrRes = (__m256i*) &llrRes [14592]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 6 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [18432]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15360]; + p_llrRes = (__m256i*) &llrRes [15360]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 7 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [20736]; + p_llrProcBuf = (__m128i*) &llrProcBuf [15744]; + p_llrRes = (__m256i*) &llrRes [15744]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 8 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [23424]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16128]; + p_llrRes = (__m256i*) &llrRes [16128]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 9 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [26496]; + p_llrProcBuf = (__m128i*) &llrProcBuf [16512]; + p_llrRes = (__m256i*) &llrRes [16512]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 10 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [33408]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17280]; + p_llrRes = (__m256i*) &llrRes [17280]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 11 CNs +// Process group with 12 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [37248]; + p_llrProcBuf = (__m128i*) &llrProcBuf [17664]; + p_llrRes = (__m256i*) &llrRes [17664]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 13 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [41856]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18048]; + p_llrRes = (__m256i*) &llrRes [18048]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 14 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [46848]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18432]; + p_llrRes = (__m256i*) &llrRes [18432]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 15 CNs +// Process group with 16 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [52224]; + p_llrProcBuf = (__m128i*) &llrProcBuf [18816]; + p_llrRes = (__m256i*) &llrRes [18816]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 17 CNs +// Process group with 18 CNs +// Process group with 19 CNs +// Process group with 20 CNs +// Process group with 21 CNs +// Process group with 22 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [58368]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19200]; + p_llrRes = (__m256i*) &llrRes [19200]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with <23 CNs + p_bnProcBuf = (__m128i*) &bnProcBuf [66816]; + p_llrProcBuf = (__m128i*) &llrProcBuf [19584]; + p_llrRes = (__m256i*) &llrRes [19584]; + for (int i=0,j=0;i<1;i++,j+=2) { + ymmRes0 = _mm256_cvtepi8_epi16(p_bnProcBuf [j]); + ymmRes1 = _mm256_cvtepi8_epi16(p_bnProcBuf [j +1]); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[24 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[48 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[72 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[96 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[120 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[144 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[168 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[192 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[216 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[240 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[264 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[288 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[312 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[336 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[360 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[384 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[408 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[432 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[456 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[480 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[504 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_bnProcBuf[528 + j +1]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_cvtepi8_epi16(p_llrProcBuf[j]); + ymmRes0 = _mm256_adds_epi16(ymmRes0, ymm0); + ymm1 = _mm256_cvtepi8_epi16(p_llrProcBuf[j +1 ]); + ymmRes1 = _mm256_adds_epi16(ymmRes1, ymm1); + ymm0 = _mm256_packs_epi16(ymmRes0, ymmRes1); + *p_llrRes = _mm256_permute4x64_epi64(ymm0, 0xD8); + p_llrRes++; +} +// Process group with 24 CNs +// Process group with 25 CNs +// Process group with 26 CNs +// Process group with 27 CNs +// Process group with 28 CNs +// Process group with 29 CNs +// Process group with 30 CNs +} diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z104_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z104_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z104_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z104_R13_AVX2.c index 95446dd402..ee97fc62bf 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z104_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z104_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z104_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z104_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z9_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z10_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z9_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z10_R13_AVX2.c index 0e1766e781..311cecf323 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z9_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z10_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z9_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z10_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z112_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z112_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z112_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z112_R13_AVX2.c index 79054a0e63..c2485cf538 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z112_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z112_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z112_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z112_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z11_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z11_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z11_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z11_R13_AVX2.c index f7153df62e..c923dfd293 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z11_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z11_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z11_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z11_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z120_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z120_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z120_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z120_R13_AVX2.c index eb32ce0f1e..f3c06abb67 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z120_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z120_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z120_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z120_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z128_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z128_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z128_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z128_R13_AVX2.c index a44948351f..3388c1c95b 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z128_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z128_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z128_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z128_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z12_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z12_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z12_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z12_R13_AVX2.c index 76870c1b62..1103606382 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z12_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z12_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z12_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z12_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z14_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z13_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z14_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z13_R13_AVX2.c index 05981134d1..6a3b0ee573 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z14_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z13_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z14_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z13_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z144_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z144_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z144_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z144_R13_AVX2.c index 149302bef4..8cb5cade6e 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z144_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z144_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z144_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z144_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z13_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z14_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z13_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z14_R13_AVX2.c index ec3daecbbb..44ee09d03d 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z13_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z14_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z13_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z14_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z15_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z15_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z15_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z15_R13_AVX2.c index 56c6ecfbc8..ffc71426b7 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z15_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z15_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z15_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z15_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z160_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z160_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z160_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z160_R13_AVX2.c index c3cc47be33..a5248e2c11 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z160_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z160_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z160_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z160_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z16_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z16_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z16_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z16_R13_AVX2.c index 294892c402..5067a4d568 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z16_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z16_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z16_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z16_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z176_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z176_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z176_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z176_R13_AVX2.c index b2a243f793..ae640b1fd4 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z176_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z176_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z176_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z176_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z18_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z18_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z18_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z18_R13_AVX2.c index b4c01b1337..56cd28a9ef 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z18_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z18_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z18_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z18_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z192_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z192_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z192_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z192_R13_AVX2.c index 983a94b5c0..e298ade2d5 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z192_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z192_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z192_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z192_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z208_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z208_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z208_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z208_R13_AVX2.c index 65da8e4e6b..c2f0497934 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z208_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z208_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z208_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z208_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z20_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z20_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z20_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z20_R13_AVX2.c index 524b308c1a..75567e0c0b 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z20_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z20_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z20_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z20_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z224_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z224_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z224_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z224_R13_AVX2.c index 0f78d0f39b..49fd55bf02 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z224_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z224_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z224_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z224_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z22_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z22_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z22_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z22_R13_AVX2.c index 230f5acc7d..a2a5cde850 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z22_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z22_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z22_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z22_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z240_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z240_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z240_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z240_R13_AVX2.c index 05944f1e0f..1b3cc7c6ad 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z240_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z240_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z240_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z240_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z24_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z24_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z24_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z24_R13_AVX2.c index f2881a8790..f719ff19e2 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z24_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z24_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z24_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z24_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z256_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z256_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z256_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z256_R13_AVX2.c index 833387428e..230f9e07a3 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z256_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z256_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z256_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z256_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z26_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z26_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z26_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z26_R13_AVX2.c index cce7e248a6..94a7f0c389 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z26_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z26_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z26_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z26_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z288_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z288_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z288_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z288_R13_AVX2.c index 54684bf1a7..91066132a4 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z288_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z288_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z288_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z288_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z28_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z28_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z28_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z28_R13_AVX2.c index a7db0b74f4..568c0096f7 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z28_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z28_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z28_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z28_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z2_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z2_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z2_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z2_R13_AVX2.c index 3d0a7276c6..e91d0d360e 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z2_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z2_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z2_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z2_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z30_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z30_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z30_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z30_R13_AVX2.c index bd4d801c78..465d36db41 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z30_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z30_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z30_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z30_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z320_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z320_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z320_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z320_R13_AVX2.c index 1770d7d3cf..99f8891c54 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z320_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z320_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z320_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z320_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z32_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z32_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z32_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z32_R13_AVX2.c index 29d09b8af6..5baaadd512 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z32_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z32_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z32_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z32_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z352_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z352_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z352_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z352_R13_AVX2.c index 99f34e7d1c..fb4a93a98e 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z352_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z352_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z352_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z352_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z36_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z36_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z36_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z36_R13_AVX2.c index 7ca983828d..be11649a57 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z36_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z36_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z36_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z36_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z384_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z384_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z384_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z384_R13_AVX2.c index 4acaf3f656..cb67f5031d 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z384_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z384_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z384_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z384_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z3_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z3_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z3_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z3_R13_AVX2.c index 8083808f29..a383a80b03 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z3_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z3_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z3_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z3_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z40_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z40_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z40_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z40_R13_AVX2.c index dff643e9eb..ce37578a66 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z40_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z40_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z40_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z40_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z44_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z44_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z44_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z44_R13_AVX2.c index 0f6a28ab52..4d7e77ed7b 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z44_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z44_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z44_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z44_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z48_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z48_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z48_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z48_R13_AVX2.c index eb5ead281d..6ed9fbb101 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z48_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z48_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z48_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z48_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z4_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z4_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z4_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z4_R13_AVX2.c index 1bae753666..863ff40747 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z4_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z4_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z4_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z4_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z52_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z52_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z52_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z52_R13_AVX2.c index 94ad129f3a..dbd111868a 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z52_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z52_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z52_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z52_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z56_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z56_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z56_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z56_R13_AVX2.c index 7d07229100..5469b77812 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z56_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z56_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z56_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z56_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z5_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z5_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z5_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z5_R13_AVX2.c index 54581a98dc..493706b9ad 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z5_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z5_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z5_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z5_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z60_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z60_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z60_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z60_R13_AVX2.c index e4d29f71f7..b504267826 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z60_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z60_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z60_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z60_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z64_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z64_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z64_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z64_R13_AVX2.c index b16ae99d91..8bfb98c9ba 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z64_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z64_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z64_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z64_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z6_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z6_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z6_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z6_R13_AVX2.c index 8e1ee65966..7156db357e 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z6_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z6_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z6_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z6_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z72_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z72_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z72_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z72_R13_AVX2.c index 85186c29b8..f93ae981f8 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z72_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z72_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z72_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z72_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z7_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z7_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z7_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z7_R13_AVX2.c index 4ad132a2b5..fe2b974170 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z7_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z7_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z7_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z7_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z80_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z80_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z80_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z80_R13_AVX2.c index 3c5cdeb759..0d8db50071 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z80_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z80_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z80_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z80_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z88_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z88_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z88_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z88_R13_AVX2.c index 2f2b97f37f..7c7ce39c1c 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z88_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z88_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z88_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z88_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z8_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z8_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z8_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z8_R13_AVX2.c index c0c3612c34..8cbc7c3012 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z8_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z8_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z8_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z8_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z96_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z96_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z96_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z96_R13_AVX2.c index 7f6f74ff38..cae1179897 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z96_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z96_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z96_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z96_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z10_13_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z9_R13_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z10_13_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z9_R13_AVX2.c index c274d4ae41..f31cf8b56a 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG1_Z10_13_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG1_Z9_R13_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG1_Z10_13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z9_R13_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z104_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z104_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z104_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z104_R15_AVX2.c index 4f65e090df..566759ac38 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z104_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z104_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z104_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z104_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z10_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z10_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z10_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z10_R15_AVX2.c index 15034e117f..273ef7894e 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z10_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z10_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z10_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z10_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z112_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z112_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z112_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z112_R15_AVX2.c index bfd31c4f3e..7ce92630e9 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z112_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z112_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z112_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z112_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z11_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z11_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z11_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z11_R15_AVX2.c index 62de036c44..c7d863559a 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z11_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z11_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z11_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z11_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z120_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z120_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z120_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z120_R15_AVX2.c index 8a70d89a99..2dfd13bfac 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z120_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z120_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z120_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z120_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z128_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z128_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z128_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z128_R15_AVX2.c index c774057310..055e83b970 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z128_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z128_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z128_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z128_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z12_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z12_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z12_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z12_R15_AVX2.c index ce33d4fd26..9a78d5df60 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z12_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z12_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z12_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z12_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z14_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z13_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z14_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z13_R15_AVX2.c index 58e832f471..59c963a8fc 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z14_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z13_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z14_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z13_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z144_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z144_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z144_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z144_R15_AVX2.c index 58a3ede3de..66b3733d42 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z144_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z144_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z144_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z144_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z13_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z14_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z13_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z14_R15_AVX2.c index de55c00b63..94c1e7cd3c 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z13_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z14_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z13_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z14_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z15_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z15_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z15_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z15_R15_AVX2.c index 836b8728b0..e50fd26998 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z15_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z15_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z15_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z15_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z160_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z160_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z160_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z160_R15_AVX2.c index 80dd283883..e6472f526c 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z160_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z160_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z160_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z160_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z16_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z16_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z16_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z16_R15_AVX2.c index b895cdcd9b..3d05fd089b 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z16_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z16_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z16_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z16_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z176_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z176_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z176_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z176_R15_AVX2.c index cf88db079a..0f14028b6d 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z176_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z176_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z176_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z176_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z18_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z18_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z18_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z18_R15_AVX2.c index ba94cfc0bb..8e44a92165 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z18_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z18_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z18_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z18_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z192_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z192_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z192_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z192_R15_AVX2.c index 063a7057b7..b56aabf024 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z192_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z192_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z192_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z192_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z208_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z208_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z208_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z208_R15_AVX2.c index 1ee56ee181..0a0ff67520 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z208_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z208_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z208_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z208_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z20_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z20_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z20_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z20_R15_AVX2.c index 65fc929bc4..59c3246689 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z20_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z20_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z20_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z20_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z224_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z224_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z224_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z224_R15_AVX2.c index b5e3c5d0fe..13f778a24c 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z224_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z224_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z224_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z224_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z22_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z22_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z22_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z22_R15_AVX2.c index f9bb71d1e3..d6ea777549 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z22_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z22_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z22_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z22_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z240_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z240_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z240_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z240_R15_AVX2.c index 605597165c..e73e53e2c1 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z240_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z240_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z240_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z240_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z24_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z24_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z24_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z24_R15_AVX2.c index 4530ab3938..94456093a1 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z24_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z24_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z24_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z24_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z256_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z256_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z256_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z256_R15_AVX2.c index c322cf09b3..ca030208df 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z256_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z256_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z256_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z256_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z26_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z26_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z26_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z26_R15_AVX2.c index acdfa2b3ae..204fecce65 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z26_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z26_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z26_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z26_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z288_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z288_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z288_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z288_R15_AVX2.c index 2296b423b2..ddcdfe2377 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z288_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z288_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z288_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z288_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z28_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z28_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z28_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z28_R15_AVX2.c index 85e251cc70..25581f51f9 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z28_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z28_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z28_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z28_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z2_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z2_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z2_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z2_R15_AVX2.c index a91c642933..df34bf42be 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z2_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z2_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z2_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z2_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z30_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z30_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z30_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z30_R15_AVX2.c index 484fb6412c..4270e115bf 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z30_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z30_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z30_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z30_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z320_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z320_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z320_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z320_R15_AVX2.c index 00c4a16d51..b86af8cc26 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z320_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z320_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z320_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z320_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z32_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z32_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z32_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z32_R15_AVX2.c index 3612e960d4..b2fbd829b6 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z32_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z32_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z32_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z32_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z352_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z352_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z352_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z352_R15_AVX2.c index 4d35ca9d3a..e2d692f5a6 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z352_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z352_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z352_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z352_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z36_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z36_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z36_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z36_R15_AVX2.c index 6b2aa586aa..8d272ae764 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z36_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z36_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z36_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z36_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z384_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z384_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z384_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z384_R15_AVX2.c index 140e16a03f..0130022c02 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z384_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z384_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z384_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z384_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z3_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z3_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z3_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z3_R15_AVX2.c index b05c643e05..220cff34ed 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z3_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z3_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z3_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z3_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z40_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z40_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z40_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z40_R15_AVX2.c index 55f94b4afc..c5373ed43e 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z40_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z40_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z40_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z40_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z44_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z44_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z44_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z44_R15_AVX2.c index c3089fbc52..f9f1dd05ef 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z44_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z44_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z44_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z44_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z48_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z48_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z48_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z48_R15_AVX2.c index 1d6b6a2bee..afc61d740d 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z48_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z48_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z48_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z48_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z4_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z4_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z4_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z4_R15_AVX2.c index 896947350a..3835c214fc 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z4_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z4_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z4_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z4_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z52_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z52_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z52_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z52_R15_AVX2.c index f93a52fa51..55039f44e9 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z52_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z52_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z52_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z52_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z56_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z56_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z56_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z56_R15_AVX2.c index 1590dae7cb..9375f4e297 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z56_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z56_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z56_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z56_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z5_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z5_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z5_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z5_R15_AVX2.c index f95d455b73..767a165818 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z5_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z5_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z5_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z5_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z60_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z60_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z60_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z60_R15_AVX2.c index 0e06e58a73..4f2a9b8190 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z60_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z60_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z60_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z60_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z64_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z64_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z64_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z64_R15_AVX2.c index 269753dbed..8d75ac2f70 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z64_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z64_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z64_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z64_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z6_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z6_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z6_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z6_R15_AVX2.c index b0d719aa46..ce0932e069 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z6_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z6_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z6_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z6_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z72_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z72_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z72_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z72_R15_AVX2.c index ae6a42bc2c..d343dedbef 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z72_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z72_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z72_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z72_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z7_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z7_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z7_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z7_R15_AVX2.c index 66fd471d37..dfd5f3a395 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z7_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z7_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z7_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z7_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z80_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z80_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z80_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z80_R15_AVX2.c index 769400769c..0b7de6d364 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z80_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z80_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z80_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z80_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z88_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z88_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z88_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z88_R15_AVX2.c index 42910fcbfb..236d3af15f 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z88_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z88_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z88_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z88_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z8_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z8_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z8_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z8_R15_AVX2.c index 209af063fc..ddc6a7acb0 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z8_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z8_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z8_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z8_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z96_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z96_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z96_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z96_R15_AVX2.c index 15f350d61b..3ee2a5135a 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z96_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z96_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z96_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z96_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z9_15_AVX2.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z9_R15_AVX2.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z9_15_AVX2.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z9_R15_AVX2.c index acc0842f9a..f076359378 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/avx2/nrLDPC_cnProc_BG2_Z9_15_AVX2.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/cnProc/nrLDPC_cnProc_BG2_Z9_R15_AVX2.c @@ -1,6 +1,6 @@ #include #include -void nrLDPC_cnProc_BG2_Z9_15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z9_R15_AVX2(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m256i ymm0, min, sgn,ones,maxLLR; ones = _mm256_set1_epi8((char)1); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z104_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z104_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z104_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z104_R13_AVX512.c index 7090e88659..9ce1b21dbf 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z104_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z104_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z104_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z104_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z9_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z10_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z9_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z10_R13_AVX512.c index c8b210c8a2..931aabc9e6 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z9_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z10_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z9_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z10_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z112_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z112_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z112_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z112_R13_AVX512.c index 46af61917a..58776ecedc 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z112_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z112_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z112_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z112_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z12_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z11_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z12_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z11_R13_AVX512.c index 2b2a2e80eb..2aeb54ea5e 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z12_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z11_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z12_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z11_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z120_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z120_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z120_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z120_R13_AVX512.c index 0422bb7415..f18f5526bd 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z120_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z120_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z120_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z120_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z128_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z128_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z128_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z128_R13_AVX512.c index 2bb9a39a86..a9aa7d52fc 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z128_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z128_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z128_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z128_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z11_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z12_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z11_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z12_R13_AVX512.c index 6db79c76db..799c26e91e 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z11_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z12_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z11_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z12_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z13_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z13_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z13_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z13_R13_AVX512.c index af39ffbbe0..394b57a483 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z13_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z13_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z13_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z13_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z144_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z144_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z144_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z144_R13_AVX512.c index b0caad9435..1ec0abd30e 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z144_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z144_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z144_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z144_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z14_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z14_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z14_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z14_R13_AVX512.c index 587dfe323a..0bf5c532bc 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z14_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z14_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z14_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z14_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z15_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z15_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z15_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z15_R13_AVX512.c index 9fc63c424f..21cc303172 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z15_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z15_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z15_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z15_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z160_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z160_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z160_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z160_R13_AVX512.c index 51a4cc7e16..ace2e27399 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z160_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z160_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z160_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z160_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z16_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z16_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z16_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z16_R13_AVX512.c index eb0477a6f8..897bf3b12a 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z16_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z16_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z16_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z16_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z176_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z176_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z176_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z176_R13_AVX512.c index 50d4ea6cf9..bafb9cd106 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z176_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z176_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z176_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z176_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z18_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z18_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z18_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z18_R13_AVX512.c index 23af4309f9..dd4c008f1d 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z18_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z18_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z18_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z18_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z192_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z192_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z192_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z192_R13_AVX512.c index f4d9331801..f9c4deca35 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z192_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z192_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z192_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z192_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z208_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z208_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z208_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z208_R13_AVX512.c index fc2d4598d9..8dd282f1f6 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z208_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z208_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z208_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z208_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z20_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z20_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z20_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z20_R13_AVX512.c index c1812d6cdf..65ba354529 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z20_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z20_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z20_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z20_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z224_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z224_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z224_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z224_R13_AVX512.c index a3712dd094..76e8d7916d 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z224_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z224_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z224_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z224_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z22_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z22_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z22_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z22_R13_AVX512.c index e57a6940bb..c619f1fa92 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z22_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z22_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z22_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z22_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z240_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z240_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z240_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z240_R13_AVX512.c index 547fe81421..6f6334f753 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z240_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z240_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z240_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z240_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z24_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z24_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z24_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z24_R13_AVX512.c index a82c63869b..94459877a7 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z24_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z24_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z24_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z24_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z256_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z256_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z256_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z256_R13_AVX512.c index b52b8b6d80..7f44b51d52 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z256_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z256_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z256_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z256_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z26_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z26_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z26_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z26_R13_AVX512.c index 3a38553649..78403121b7 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z26_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z26_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z26_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z26_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z288_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z288_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z288_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z288_R13_AVX512.c index 021d7ebc06..eb69908998 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z288_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z288_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z288_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z288_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z28_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z28_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z28_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z28_R13_AVX512.c index f9a3dc4d78..6d125fb6bc 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z28_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z28_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z28_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z28_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z3_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z2_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z3_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z2_R13_AVX512.c index 0d61a00fd6..ad0d6936fe 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z3_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z2_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z3_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z2_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z30_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z30_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z30_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z30_R13_AVX512.c index 3577d0408c..2ff2574d9a 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z30_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z30_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z30_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z30_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z320_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z320_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z320_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z320_R13_AVX512.c index 481d3cfb57..19f323d1f8 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z320_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z320_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z320_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z320_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z32_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z32_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z32_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z32_R13_AVX512.c index 948ef9011e..aee2cc1b0e 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z32_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z32_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z32_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z32_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z352_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z352_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z352_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z352_R13_AVX512.c index 0e1403eab1..27d8374f1d 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z352_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z352_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z352_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z352_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z36_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z36_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z36_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z36_R13_AVX512.c index 47a3ac7eb5..2cbae94587 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z36_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z36_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z36_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z36_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z384_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z384_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z384_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z384_R13_AVX512.c index e28d5adbb4..be72a37443 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z384_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z384_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z384_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z384_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z2_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z3_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z2_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z3_R13_AVX512.c index 28cd588dd5..bcfba0de03 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z2_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z3_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z2_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z3_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z40_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z40_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z40_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z40_R13_AVX512.c index 8d64735af7..7e022c9691 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z40_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z40_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z40_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z40_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z44_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z44_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z44_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z44_R13_AVX512.c index 9b7179e26c..11908574d7 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z44_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z44_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z44_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z44_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z48_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z48_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z48_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z48_R13_AVX512.c index d3483cc5db..dcf9d48363 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z48_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z48_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z48_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z48_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z6_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z4_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z6_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z4_R13_AVX512.c index 1fb8a310ab..4fee7d3af5 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z6_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z4_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z6_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z4_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z52_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z52_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z52_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z52_R13_AVX512.c index e23a9003fc..5d0a8c9862 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z52_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z52_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z52_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z52_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z56_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z56_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z56_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z56_R13_AVX512.c index 72d3b15771..0c0a6bc09c 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z56_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z56_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z56_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z56_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z4_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z5_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z4_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z5_R13_AVX512.c index e3a32db495..0eaf965c08 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z4_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z5_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z4_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z5_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z60_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z60_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z60_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z60_R13_AVX512.c index df5670b10f..0dfb581d3a 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z60_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z60_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z60_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z60_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z64_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z64_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z64_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z64_R13_AVX512.c index c3addcbd48..e4cfc593d2 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z64_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z64_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z64_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z64_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z5_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z6_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z5_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z6_R13_AVX512.c index 2e5adf5f34..d1e3aea863 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z5_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z6_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z5_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z6_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z72_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z72_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z72_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z72_R13_AVX512.c index 5f6e1e3946..7b948004e8 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z72_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z72_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z72_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z72_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z7_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z7_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z7_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z7_R13_AVX512.c index 21f4623647..9685d28413 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z7_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z7_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z7_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z7_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z80_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z80_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z80_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z80_R13_AVX512.c index 35ec155a7b..cc13115c68 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z80_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z80_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z80_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z80_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z88_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z88_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z88_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z88_R13_AVX512.c index be4ee80c38..9010ccd0b8 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z88_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z88_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z88_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z88_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z8_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z8_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z8_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z8_R13_AVX512.c index 6a05ba3800..097b273aa6 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z8_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z8_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z8_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z8_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z96_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z96_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z96_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z96_R13_AVX512.c index 4bf4f238f7..029b3cd7d5 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z96_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z96_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z96_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z96_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z10_13_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z9_R13_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z10_13_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z9_R13_AVX512.c index a22fe64e88..b8526c1fa0 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z10_13_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG1_Z9_R13_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG1_Z10_13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG1_Z9_R13_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z104_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z104_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z104_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z104_R15_AVX512.c index 4d162c2b4a..44c3d05e43 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z104_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z104_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z104_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z104_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z10_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z10_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z10_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z10_R15_AVX512.c index 243b9189ff..13bfc07dc8 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z10_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z10_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z10_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z10_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z112_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z112_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z112_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z112_R15_AVX512.c index abf32524ac..2bfea51617 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z112_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z112_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z112_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z112_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z11_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z11_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z11_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z11_R15_AVX512.c index d92e6844cd..47a9347527 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z11_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z11_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z11_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z11_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z120_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z120_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z120_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z120_R15_AVX512.c index 992269d1ef..8e081006db 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z120_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z120_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z120_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z120_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z128_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z128_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z128_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z128_R15_AVX512.c index 415ff53e5a..212eeeb99a 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z128_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z128_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z128_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z128_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z12_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z12_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z12_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z12_R15_AVX512.c index 4ac92fe5ac..5cc9987065 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z12_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z12_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z12_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z12_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z14_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z13_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z14_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z13_R15_AVX512.c index 96cf1272d7..1a768656bb 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z14_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z13_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z14_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z13_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z144_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z144_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z144_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z144_R15_AVX512.c index 31075c75fe..424d013afa 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z144_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z144_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z144_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z144_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z13_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z14_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z13_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z14_R15_AVX512.c index 9b33ec8dbd..7ac9608117 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z13_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z14_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z13_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z14_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z15_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z15_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z15_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z15_R15_AVX512.c index 1f05cc5a3f..46784bdd5a 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z15_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z15_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z15_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z15_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z160_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z160_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z160_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z160_R15_AVX512.c index ec007c3409..4a456e452d 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z160_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z160_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z160_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z160_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z16_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z16_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z16_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z16_R15_AVX512.c index ac901cecaa..cafbcf0ec3 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z16_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z16_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z16_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z16_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z176_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z176_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z176_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z176_R15_AVX512.c index 7d70b215e1..c7e9c3b9e4 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z176_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z176_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z176_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z176_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z18_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z18_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z18_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z18_R15_AVX512.c index 287ea1c758..7a70ae0856 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z18_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z18_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z18_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z18_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z192_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z192_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z192_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z192_R15_AVX512.c index b6192d38c9..772edee176 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z192_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z192_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z192_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z192_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z208_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z208_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z208_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z208_R15_AVX512.c index 7bd16c5fd8..0d1d45a2da 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z208_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z208_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z208_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z208_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z20_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z20_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z20_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z20_R15_AVX512.c index c0e94bcadc..808d1d557e 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z20_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z20_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z20_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z20_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z224_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z224_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z224_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z224_R15_AVX512.c index 3a4e8f12ec..5040a8055c 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z224_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z224_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z224_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z224_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z22_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z22_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z22_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z22_R15_AVX512.c index 6a4f14e60b..d6bc032b37 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z22_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z22_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z22_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z22_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z240_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z240_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z240_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z240_R15_AVX512.c index bed7d24a36..b6aa90ffaa 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z240_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z240_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z240_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z240_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z24_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z24_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z24_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z24_R15_AVX512.c index bfaf3291a5..200e410ddd 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z24_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z24_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z24_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z24_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z256_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z256_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z256_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z256_R15_AVX512.c index 013389c562..baba4c6496 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z256_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z256_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z256_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z256_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z26_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z26_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z26_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z26_R15_AVX512.c index f375a17eda..3f7f3e3ca1 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z26_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z26_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z26_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z26_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z288_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z288_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z288_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z288_R15_AVX512.c index a660eef000..be696e744c 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z288_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z288_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z288_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z288_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z28_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z28_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z28_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z28_R15_AVX512.c index 580ce518a0..fe487719cf 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z28_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z28_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z28_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z28_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z2_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z2_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z2_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z2_R15_AVX512.c index 51cb67c986..b94d3783d4 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z2_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z2_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z2_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z2_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z30_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z30_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z30_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z30_R15_AVX512.c index a50a01b734..aae2a813c7 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z30_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z30_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z30_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z30_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z320_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z320_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z320_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z320_R15_AVX512.c index 88d88a389a..2ba9f47ab9 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z320_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z320_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z320_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z320_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z32_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z32_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z32_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z32_R15_AVX512.c index b8687235ad..ecc660ddf6 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z32_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z32_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z32_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z32_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z352_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z352_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z352_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z352_R15_AVX512.c index 29a64dc1cd..7cb4a18389 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z352_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z352_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z352_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z352_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z36_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z36_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z36_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z36_R15_AVX512.c index d8b7843ca1..33ab4c8a85 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z36_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z36_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z36_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z36_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z384_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z384_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z384_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z384_R15_AVX512.c index baf037fe0b..38a3c6deec 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z384_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z384_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z384_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z384_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z3_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z3_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z3_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z3_R15_AVX512.c index 95b960548e..e24d00d8f7 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z3_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z3_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z3_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z3_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z40_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z40_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z40_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z40_R15_AVX512.c index 10a8b929ed..9603e1669a 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z40_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z40_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z40_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z40_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z44_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z44_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z44_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z44_R15_AVX512.c index 466fdd86d3..f930d6ae14 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z44_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z44_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z44_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z44_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z48_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z48_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z48_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z48_R15_AVX512.c index 084d8ba087..541fd39183 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z48_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z48_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z48_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z48_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z6_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z4_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z6_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z4_R15_AVX512.c index a7156664d9..1244fbb05c 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z6_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z4_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z6_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z4_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z52_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z52_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z52_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z52_R15_AVX512.c index ea2106788e..d974028049 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z52_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z52_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z52_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z52_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z56_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z56_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z56_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z56_R15_AVX512.c index 807e1067e5..fe905cfdc4 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z56_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z56_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z56_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z56_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z4_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z5_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z4_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z5_R15_AVX512.c index 0430c08f50..627309b2ba 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z4_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z5_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z4_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z5_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z60_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z60_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z60_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z60_R15_AVX512.c index c0cc4cd03d..332175bebe 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z60_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z60_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z60_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z60_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z64_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z64_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z64_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z64_R15_AVX512.c index 0007ff6f4f..d44251a81e 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z64_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z64_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z64_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z64_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z5_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z6_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z5_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z6_R15_AVX512.c index 8d5af4ee74..429dedff76 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z5_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z6_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z5_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z6_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z72_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z72_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z72_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z72_R15_AVX512.c index 87b1e951db..af7bd6082d 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z72_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z72_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z72_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z72_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z7_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z7_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z7_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z7_R15_AVX512.c index 6ea5bc85f9..9e060eef9b 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z7_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z7_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z7_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z7_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z80_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z80_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z80_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z80_R15_AVX512.c index 9daeb6a287..9191e45570 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z80_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z80_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z80_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z80_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z88_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z88_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z88_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z88_R15_AVX512.c index b58b3c72ce..c8cd9df6af 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z88_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z88_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z88_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z88_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z8_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z8_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z8_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z8_R15_AVX512.c index 15e990a7d2..c8a4c790d1 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z8_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z8_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z8_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z8_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z96_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z96_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z96_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z96_R15_AVX512.c index 4447d802b8..1a2b478180 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z96_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z96_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z96_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z96_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512(); diff --git a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z9_15_AVX512.c b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z9_R15_AVX512.c similarity index 99% rename from openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z9_15_AVX512.c rename to openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z9_R15_AVX512.c index 1b5492e4a3..b3e2eb87ec 100644 --- a/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z9_15_AVX512.c +++ b/openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/ldpc_gen_files/nrLDPC_cnProc_BG2_Z9_R15_AVX512.c @@ -1,7 +1,7 @@ #include #include #define conditional_negate(a,b,z) _mm512_mask_sub_epi8(a,_mm512_movepi8_mask(b),z,a) -void nrLDPC_cnProc_BG2_Z9_15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { +void nrLDPC_cnProc_BG2_Z9_R15_AVX512(int8_t* cnProcBuf,int8_t* cnProcBufRes) { //Process group with 3 BNs __m512i zmm0, min, sgn,zeros,maxLLR; zeros = _mm512_setzero_si512();